Class: LSync::Methods::RSync
- Inherits:
-
LSync::Method
- Object
- LSync::Method
- LSync::Methods::RSync
- Defined in:
- lib/lsync/methods/rsync.rb
Overview
0 Success 1 Syntax or usage error 2 Protocol incompatibility 3 Errors selecting input/output files, dirs 4 Requested action not supported: an attempt was made to manipulate 64-bit files on a platform
that cannot support them; or an option was specified that is supported by the client and not by the server.
5 Error starting client-server protocol 6 Daemon unable to append to log-file 10 Error in socket I/O 11 Error in file I/O 12 Error in rsync protocol data stream 13 Errors with program diagnostics 14 Error in IPC code 20 Received SIGUSR1 or SIGINT 21 Some error returned by waitpid() 22 Error allocating core memory buffers 23 Partial transfer due to error 24 Partial transfer due to vanished source files 25 The –max-delete limit stopped deletions 30 Timeout in data send/receive 35 Timeout waiting for daemon connection
Direct Known Subclasses
Instance Method Summary collapse
-
#initialize(direction, options = {}) ⇒ RSync
constructor
A new instance of RSync.
- #run(controller) ⇒ Object
- #run_handler(controller, local_server, source, destination, arguments) ⇒ Object
- #should_run?(controller) ⇒ Boolean
Methods included from EventHandler
Constructor Details
#initialize(direction, options = {}) ⇒ RSync
Returns a new instance of RSync.
51 52 53 54 55 56 57 58 59 |
# File 'lib/lsync/methods/rsync.rb', line 51 def initialize(direction, = {}) super() @direction = direction @command = [:command] || "rsync" @options = @connection = nil end |
Instance Method Details
#run(controller) ⇒ Object
101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/lsync/methods/rsync.rb', line 101 def run(controller) directory = controller.directory arguments = (@options[:arguments] || ["--archive"]) + (directory.[:arguments] || []) local_server, remote_server, source, destination = configuration(controller, controller.directory, controller.directory) arguments += connect_arguments(local_server, remote_server) # Create the destination backup directory controller.target.exec!(["mkdir", "-p", controller.target.full_path(directory.path)]) run_handler(controller, local_server, source, destination, arguments) end |
#run_handler(controller, local_server, source, destination, arguments) ⇒ Object
115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/lsync/methods/rsync.rb', line 115 def run_handler(controller, local_server, source, destination, arguments) command = [@command] + arguments + [source, destination] local_server.exec(command) do |task| LSync::log_task(task, controller.logger) result = task.wait # Exit status 24 means that some files were deleted between indexing the data and copying it. unless result.exitstatus == 0 || result.exitstatus == 24 raise BackupMethodError.new("Backup from #{source} to #{destination} failed.", :method => self) end end end |
#should_run?(controller) ⇒ Boolean
130 131 132 133 134 135 136 137 138 |
# File 'lib/lsync/methods/rsync.rb', line 130 def should_run?(controller) if @direction == :push return controller.current == controller.master elsif @direction == :pull return controller.target.local? else return false end end |