Kanrisuru

cp

Copy files and directories in ruby
linux manual

Basic Usage

require 'kanrisuru'
host = Kanrisuru::Remote::Host.new(host: '127.0.1.1', username: 'ubuntu', keys: ['~/.ssh/id_rsa'])

host.cat('~/test.txt')
[
  'hello',
  'world'
]

result = host.cp('~/test.txt', '~/test-copy.txt')
result.success?
true

host.cat('~/test-copy.txt')
[
  'hello',
  'world'
]

Parameters

Field Type Description
source string
array
Required A list of files / directories to copy
destination string
Required If the the source was a single file, destination can either be a file or directory to copy the file to. For multiple files, the destination is a directory to copy to
backup boolean
string
Makes a backup of each existing destination file
recursive boolean
This option will copy directories recursively
one_file_system boolean
Stay on this file system
update boolean
Copy only when the source file is newer than the destination file or when the destination file is missing
follow boolean
Follow command line links in source
no_clobber boolean
Do not overwrite an existing file
strip_trailing_slashes boolean
Remove any trailing slashes from each source argument.
preserve boolean
string
array
Preserves the file / directory attributes of source to destination (default - mode,ownership,timestamps)
no_target_directory boolean
Treat destination as a normal file
target_directory string
Copy all source arguments into directory

Result

No explicit data struct returned, only option is success?, failure?, and status to see if the program exited properly.

Return Example

result = host.cp(['file1.conf', 'file2.conf', 'file3.conf'], 'dir')
result.success?
true

host.cp(['file1.conf', 'file2.conf', 'file3.conf'], 'dir', backup: true).status
0

host.ls(path: '~/dir').map(&:path)
[
  "file1.conf",
  "file1.conf~",
  "file2.conf",
  "file2.conf~",
  "file3.conf",
  "file3.conf~"
]

Exit Status

Code Description
0 Success
1 Failure

Tested On

  • Ubuntu, Debian, Centos, Fedora, Redhat, OpenSuse, SLES