sps_filesync 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +2 -0
- data.tar.gz.sig +1 -0
- data/lib/sps_filesync.rb +115 -0
- metadata +112 -0
- metadata.gz.sig +4 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 711e11ca97636d5d844135fce4536cd3fc1bfa9eba3e99e19a0fd81a13cf0f36
|
4
|
+
data.tar.gz: f9a384de79ee25dad945a87c6204de9a4c1898895e95851a0f408db4e6e98b6e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 784b3e141adfbd001a083074b68ff4a1285f6edcb2008f34213e82864f5e435d9e17440e96e1728b72d24f0c84e20df677534f4aaa3a94bc7586e2914fa14f06
|
7
|
+
data.tar.gz: 539bd2abcb92bc9216bf22d42e6f73c5128fa2f191436ff783b3c50f2a2b3438ddd7ed6d6b8c1e881b6416c3f4928b7ce78de2270828ae314938f649839d6880
|
checksums.yaml.gz.sig
ADDED
@@ -0,0 +1,2 @@
|
|
1
|
+
Y��K �py�s�܊eC�긲4%����\�#�}K��g�b��؏T'1�T��%�l�P��'���<ۣɚ�Yw�Fn�� @�f���X��z�lK�k���Y�6��<8�e)����u�V�E0�Yzj��usP���g� }�Ԥ����kx�|�.+E
|
2
|
+
[�:`if�6Cao(���Pm��O};<��ۇ�sƻb�/㴧�%��qi��$ଓ���A���Q�uP~{��A�����m�b@f���l�%VO,��b�l[� *F>��6����૪,�O)�4pY`�0.Pί!7,�HsAȒiA�7L��<��ǭ�7!oD�^�$4
|
data.tar.gz.sig
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
-��>��\W������_!�˯�4���V@�j�$�l�ku��E\B�B��L)C;BE�mE�;�Ƨ0��$ �R���=�6lo<Vǧ�b���@,Z�WK �G�p?�"�o���&�y3{s�u�ϑX�����Ź�b%A �0��yʵ[L(GC}��yu4�w��y�ޔ1N���)~�O��ngg�hǵ7��N3ٙ`���[!�����`�[aA� 4��k�6��B�K���/m�|V����`�]Ė+=h��u~�F=�H�������7�
|
data/lib/sps_filesync.rb
ADDED
@@ -0,0 +1,115 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# file: sps_filesync.rb
|
4
|
+
|
5
|
+
require 'sps-sub'
|
6
|
+
require 'drb_fileclient'
|
7
|
+
|
8
|
+
|
9
|
+
class SpsFileSync < SPSSub
|
10
|
+
|
11
|
+
|
12
|
+
def initialize(nodes=[], port: '59000', host: nil, log: nil, debug: false)
|
13
|
+
|
14
|
+
raise 'SpsFileSync::initialize nodes.empty' if nodes.empty?
|
15
|
+
|
16
|
+
@nodes, @debug = nodes, debug
|
17
|
+
super(port: port, host: host, log: log)
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
def subscribe(topic: 'file/*')
|
22
|
+
|
23
|
+
super(topic: topic) do |msg, topic|
|
24
|
+
|
25
|
+
|
26
|
+
if @debug then
|
27
|
+
puts 'topic: ' + topic.inspect
|
28
|
+
puts 'msg: ' + msg.inspect
|
29
|
+
end
|
30
|
+
|
31
|
+
action = topic.split('/').last.to_sym
|
32
|
+
|
33
|
+
@master_address , path = msg.match(/^dfs:\/\/([^\/]+)(.*)/).captures
|
34
|
+
|
35
|
+
case action
|
36
|
+
when :cp
|
37
|
+
|
38
|
+
src, dest = msg.split(/ +/,2)
|
39
|
+
|
40
|
+
file_op do |f, node|
|
41
|
+
src_path = "dfs://%s%s" % [node, src[/^dfs:\/\/[^\/]+(.*)/]]
|
42
|
+
target_path = "dfs://%s%s" % [node, dest[/^dfs:\/\/[^\/]+(.*)/]]
|
43
|
+
f.cp src_path, target_path
|
44
|
+
end
|
45
|
+
|
46
|
+
when :mkdir
|
47
|
+
|
48
|
+
file_op {|f, node| f.mkdir "dfs://%s%s" % [node, path] }
|
49
|
+
|
50
|
+
when :mkdir_p
|
51
|
+
|
52
|
+
file_op {|f, node| f.mkdir_p "dfs://%s%s" % [node, path] }
|
53
|
+
|
54
|
+
when :mv
|
55
|
+
|
56
|
+
src, dest = msg.split(/ +/,2)
|
57
|
+
|
58
|
+
file_op do |f, node|
|
59
|
+
src_path = "dfs://%s/%s" % [node, src[/^dfs:\/\/[^\/]+(.*)/]]
|
60
|
+
target_path = "dfs://%s/%s" % [node, dest[/^dfs:\/\/[^\/]+(.*)/]]
|
61
|
+
f.mv src_path, target_path
|
62
|
+
end
|
63
|
+
|
64
|
+
when :write
|
65
|
+
|
66
|
+
master_path = msg
|
67
|
+
|
68
|
+
file_op do |f, node|
|
69
|
+
target_path = "dfs://%s%s" % [node, path]
|
70
|
+
|
71
|
+
if @debug then
|
72
|
+
puts 'master_path: ' + master_path.inspect
|
73
|
+
puts 'target_path: ' + target_path.inspect
|
74
|
+
end
|
75
|
+
|
76
|
+
DfsFile.cp master_path, target_path
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
when :rm
|
81
|
+
|
82
|
+
file_op {|f, node| f.rm "dfs://%s%s" % [node, path] }
|
83
|
+
|
84
|
+
when :zip
|
85
|
+
|
86
|
+
master_path = msg
|
87
|
+
|
88
|
+
file_op do |f, node|
|
89
|
+
target_path = "dfs://%s%s" % [node, path]
|
90
|
+
f.cp master_path, target_path
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
private
|
98
|
+
|
99
|
+
def file_op()
|
100
|
+
|
101
|
+
(@nodes - [@master_address]).each do |node|
|
102
|
+
|
103
|
+
puts 'node: ' + node.inspect if @debug
|
104
|
+
|
105
|
+
begin
|
106
|
+
yield(DfsFile, node)
|
107
|
+
rescue
|
108
|
+
'warning: node: ' + node + ' ' + ($!).inspect
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
metadata
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sps_filesync
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- James Robertson
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
|
14
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTgwODIzMjMyOTQwWhcN
|
15
|
+
MTkwODIzMjMyOTQwWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
16
|
+
cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCw3mas
|
17
|
+
jZEWgj6OFyG9TNSjeF09YCP72pKa9ggsCMoeKc9rbbY7TyINmPLG1s4ev95sqsPS
|
18
|
+
13ANiuzVZn0JfftMpwnFy2o0qgXwIZpovk+Zn6FenG3Fr4tUur9liiv6EL/jyrtp
|
19
|
+
O0rwmeO00lXzhJs8B+3ZpYmGAHvkKTpv+oUCNvn6v9Gw22DgD9BWm/CXg5GfBn73
|
20
|
+
BO5LToWeJP0iaBDJbj6ohZqezT7iDo/UYsePU3fhVX5mm95xCPphHyNC/SdhDLHL
|
21
|
+
Ips4zDq0QW6yz1LRFSbISljONdWfVe3g3my6yDL7Fj9W0PccZT28KwRamNl8koOO
|
22
|
+
xOOum1hdykt9Td8KgUiQQMm9rvCQwZAmCDd9Cf6T1/gVu7iYZ5mPClGefbDoN1JO
|
23
|
+
vCJ5v5VlGmSyX+v2NH2rrM31iJe4+NFEejGJrW8PUzNtlf4MZdasS1MBl1kgznRf
|
24
|
+
lCiFUSj4io5ikqmnrF2C7hlA9O0Quzi5qneqCLZ0U1ps+ckUWBWPuGu5vUECAwEA
|
25
|
+
AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUlzsKxPzs
|
26
|
+
SxnbMPV8Q3rPLh6voIcwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
27
|
+
c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
|
28
|
+
BgkqhkiG9w0BAQsFAAOCAYEAc4WuMfr3Hvgv2YPMVhFQi42fy3meXByNZBkXG46N
|
29
|
+
VSjTFnaXmj11rroZMaO6gZKySLgAehsjIH9RDNCXDTFeJFNM6BfR+WNebYKOGoVV
|
30
|
+
QZtE9ZGESWXYf7Ql3gm4Mia58J74/wyapaIRXW+IHZIa6XxrxC+YEH5UToeeeH08
|
31
|
+
edICTXVULHlW4HfwDEwRG1BAoqnDnRDoIMZNGVKMmyFLwuHN/dNZ2HAehBl57ZPo
|
32
|
+
9jSA/sb2jZut0qCXwMB4rWdksOqtSShSKiXAC/y9rGYyiIGnRqt2UWKhnHYMT2kq
|
33
|
+
nGnrNUGJ2dNWSE6JU8mFTf9bKg9l9SzsQEqPNxo0qYZwBmoaw/kVkasWZemcakXS
|
34
|
+
IsQxiOQ4HosGLw1wqCpCdv/+wrjV0eC+07icS2dg+5mdTGS1aI2iLrWY9xOHbMY3
|
35
|
+
feUGIGfnNt45GzAXotThqQumr3i8r7QA6adlEdEvfEuB4QJ2sjZ+1mneJVJOWXuQ
|
36
|
+
0EhbgFKdvj2b8zaB8UqvKK0Q
|
37
|
+
-----END CERTIFICATE-----
|
38
|
+
date: 2018-08-23 00:00:00.000000000 Z
|
39
|
+
dependencies:
|
40
|
+
- !ruby/object:Gem::Dependency
|
41
|
+
name: sps-sub
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0.3'
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 0.3.6
|
50
|
+
type: :runtime
|
51
|
+
prerelease: false
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - "~>"
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0.3'
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: 0.3.6
|
60
|
+
- !ruby/object:Gem::Dependency
|
61
|
+
name: drb_fileclient
|
62
|
+
requirement: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - "~>"
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0.4'
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 0.4.2
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - "~>"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0.4'
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: 0.4.2
|
80
|
+
description:
|
81
|
+
email: james@jamesrobertson.eu
|
82
|
+
executables: []
|
83
|
+
extensions: []
|
84
|
+
extra_rdoc_files: []
|
85
|
+
files:
|
86
|
+
- lib/sps_filesync.rb
|
87
|
+
homepage: https://github.com/jrobertson/sps_filesync
|
88
|
+
licenses:
|
89
|
+
- MIT
|
90
|
+
metadata: {}
|
91
|
+
post_install_message:
|
92
|
+
rdoc_options: []
|
93
|
+
require_paths:
|
94
|
+
- lib
|
95
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0'
|
100
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
requirements: []
|
106
|
+
rubyforge_project:
|
107
|
+
rubygems_version: 2.7.6
|
108
|
+
signing_key:
|
109
|
+
specification_version: 4
|
110
|
+
summary: Used in conjunction with the drb_fileserver_plus gem to synchronise files
|
111
|
+
between 2 or more nodes on the network.
|
112
|
+
test_files: []
|
metadata.gz.sig
ADDED
@@ -0,0 +1,4 @@
|
|
1
|
+
ro:55�[��V���I�Rx��jB��y��c-|5��`l��}�A�ym�[�:O��п�&� ����=�wb�<�3#\m:̄]x2y�Z�gv��Fr�N)
|
2
|
+
��"������On��D8��m~�j��S�p�|�_����pfq��ٮg��m���a���NV=q�|7`���vr��,�ң�^�Zd�F�P�tB�=L�&���Hf85'8�#4���o<y&Ϧ-��+�k<��<
|
3
|
+
��Cr�^�
|
4
|
+
��Se.�ýy|x3��܅!ǍR�L�\��R$�;����5��5H���'f��TE K��T�|]�Yr匷���DzK5l�z�:��K� 7:�������U�=�oǭ�[�ԧ��j�
|