In this Article, I will take you through 3 Best Linux Copy File Command Examples. There are many open source tools that can be used in Linux to copy the files from a source to destination in a localhost or copy files from localhost to remote server. We have commands like cp for copy within the host, scp for copy between 2 nodes and rsync to copy within the host or between the nodes. We will also go through cp options, scp options and rsync options which can be used to perform variety of tasks.
Linux Copy File Command
Also Read: 10 Best Examples of cp command in Linux
1. CP Command in Linux
Everyone working or dealing with Linux OS must be aware of
cp command in Linux which is usually used to copy any files and directories within a local system. Below is the syntax to use
cp command in Linux.
cp [OPTION]... [-T] SOURCE DEST cp [OPTION]... SOURCE... DIRECTORY cp [OPTION]... -t DIRECTORY SOURCE...
a)Copy Files Interactively Using cp command in Linux
You can use
-i option to copy files interactively from source to destination. In this example, we are trying to copy
test.txt file interactively to
/opt path as shown below.
[root@localhost ~]# cp -i test.txt /opt
b)Check all cp command options using –help
You can check all the command options that can be used with
cp command in Linux using
--help option as shown below.
[root@localhost ~]# cp --help Mandatory arguments to long options are mandatory for short options too. -a, --archive same as -dR --preserve=all --attributes-only don't copy the file data, just the attributes --backup[=CONTROL] make a backup of each existing destination file -b like --backup but does not accept an argument
c)Performing Linux Copy File using -p option
If you want to save all the file attributes and permissions during copy then you can use
-p option to copy all the attributes as well.
[root@localhost test]# cp -pv file2.txt /root/ 'file2.txt' -> '/root/file2.txt'
2. RSYNC Command
RSYNC command can be used as faster copy operations and are generally considered as advance form of
cp command in Linux. It will sync any change in data between source and Destination.
Local: rsync [OPTION...] SRC... [DEST] Access via remote shell: Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST:DEST Access via rsync daemon: Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST::DEST rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
a)Copy File using rsync command
You can copy file using simple
rsync command as shown below. You can also use verbose
-v option to check the progress of copy operations.
[root@localhost test]# rsync -v file2.txt /root/ file2.txt sent 3,980 bytes received 35 bytes 8,030.00 bytes/sec total size is 3,893 speedup is 0.97
b)Check all rsync options using –help
You can check all
rsync options that can be used using
--help option as shown below. Using
rsync options you can check and perform different
rsync operations. You can check more about the usage of
rsync options on 26 Popular Rsync Examples for Linux Professionals.
[root@localhost ~]# rsync --help Options -v, --verbose increase verbosity --info=FLAGS fine-grained informational verbosity --debug=FLAGS fine-grained debug verbosity --msgs2stderr special output handling for debugging -q, --quiet suppress non-error messages --no-motd suppress daemon-mode MOTD (see manpage caveat) -c, --checksum skip based on checksum, not mod-time & size
c)Sync Files Quietly with the Remote Server
If you want to sync all the source files quietly with the remote destination server, then you need to use
-q option as shown below. This option will suppress all non-error messages. Here we are trying to Linux copy file to the remote server
/opt path. Please note that here we are using password based authentication to reach out destination server.
[root@localhost ~]# rsync -q file/ email@example.com:/opt firstname.lastname@example.org's password:
3. SCP Command
SCP is also known as secure copy due to the fact that it encrypts the data while performing Linux copy file operations to the destination server. This is probably the most widely tool used for remote copy.
scp [-346BCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file] [-J destination] [-l limit] [-o ssh_option] [-P port] [-S program] source ... target
a)Remotely Linux Copy a File using SCP Command
You can remotely copy a file using simple
scp command as shown below. In this example, we are trying to copy
test.txt to remote server 192.168.0.110 under
[root@localhost test]# scp test.txt email@example.com:/opt firstname.lastname@example.org's password: test.txt 100% 0 0.0KB/s 00:00
b)Remotely Linux Copy file with the Attributes Preserved
-p option as shown above, you can also use this option with
scp command as shown below. This option will preserve all the file permissions during remote copy.
[root@localhost ~]# scp -p file2.txt email@example.com:/root/ firstname.lastname@example.org's password: file2.txt 100% 3893 1.7MB/s 00:00
c)See Linux Copy file progress using verbose Option with scp command
If you want to view the progress of Linux copy file to remote server along with saving the file attributes then you need to use
-pv option with
scp command as shown below.
[root@localhost test]# scp -pv file2.txt email@example.com:/root/ Executing: program /usr/bin/ssh host 192.168.0.110, user root, command scp -v -p -t /root/ OpenSSH_8.0p1, OpenSSL 1.1.1c FIPS 28 May 2019 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf debug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config debug1: configuration requests final Match pass debug1: re-parsing configuration debug1: Reading configuration data /etc/ssh/ssh_config debug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf debug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config debug1: Connecting to 192.168.0.110 [192.168.0.110] port 22. debug1: Connection established. debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4 debug1: match: OpenSSH_7.4 pat OpenSSH_7.0*,OpenSSH_7.1*,OpenSSH_7.2*,OpenSSH_7.3*,OpenSSH_7.4*,OpenSSH_7.5*,OpenSSH_7.6*,OpenSSH_7.7* compat 0x04000002 debug1: Authenticating to 192.168.0.110:22 as 'root' debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: algorithm: curve25519-sha256 debug1: kex: host key algorithm: ecdsa-sha2-nistp256 debug1: Unspecified GSS failure. Minor code may provide more information No Kerberos credentials available (default cache: KCM:) debug1: Next authentication method: publickey debug1: Trying private key: /root/.ssh/id_rsa debug1: Trying private key: /root/.ssh/id_dsa debug1: Trying private key: /root/.ssh/id_ecdsa debug1: Trying private key: /root/.ssh/id_ed25519 debug1: Trying private key: /root/.ssh/id_xmss debug1: Next authentication method: password firstname.lastname@example.org's password: debug1: Authentication succeeded (password). Authenticated to 192.168.0.110 ([192.168.0.110]:22). Sending file modes: C0644 3893 file2.txt Sink: C0644 3893 file2.txt file2.txt 100% 3893 2.0MB/s 00:00 debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 debug1: channel 0: free: client-session, nchannels 1 debug1: fd 0 clearing O_NONBLOCK Transferred: sent 5964, received 2588 bytes, in 0.1 seconds Bytes per second: sent 57370.2, received 24895.1 debug1: Exit status 0