scp
特点:安全易用,适用于单文件小容量传输。
例子:将主机A的 file.txt 文件传输到主机B的 dir 目录。
scp /主机A/file.txt root@192.168.1.1:/主机B/dir
例子:将主机A的 dir01 目录(包括所有子目录和文件)传输到主机B的 dir02 目录下,目标实际效果为/主机B/dir02/dir01。
scp -Cpr ./主机A/dir01 root@47.98.248.151:/主机B/dir02
- -C:压缩传输(大写)。
- -p:保持与源文件相同的修改和访问时间等(小写)。
- -r:递归复制目录。
若对端主机默认端口为非 22 端口,则可以按如下参数指定端口。
scp -P 2222 /主机A/file.txt root@192.168.1.1:/主机B/dir
rsync
特点:支持断点续传,适用于多文件多目录大容量传输。
例:1:将主机A中 dir01 目录下的内容同步到主机B中的 dir01 目录(会覆盖主机B的旧文件)。
rsync -aPhz /主机A/dir01/ root@192.168.1.1:/主机B/dir01
这里需要注意最后的斜杠,加与不加是有区别的。前面加了表示目录下的内容,后面不加表示目录,即意为将内容传到目录下。
- -a:归档模式,相当于-rlptgoD,即递归目录、保留符号链接、保持权限和修改时间、保持所有者(仅超级管理员)和组、保持设备文件和特殊文件。
- -P:采用分片传输,保留已传输文件,以便断点续传。
- -h:单位表示可读性。
- -z:压缩传输(当发现传输速度低于磁盘读写正常速度时,请去掉这个参数)。
若对端主机默认端口为非 22 端口,则可以按如下参数指定端口。
rsync -avPhz -e 'ssh -p 2222' /主机A/dir01/ root@192.168.1.1:/主机B/dir01
例子2:当需要同步的文件有特殊权限时,可以用下面这个
rsync -aAXP --info=progress2 /media/disk1/ /media/disk2/
- -A:保留 ACL。
- -X:保留扩展属性(xattr)
- --info=progress2:是 rsync 3.x 提供的一个总体进度显示参数
其它一些需要多加注意的参数:
- -H:只有源数据本身有大量硬链接时才需要。
- -c:会读取每个文件计算校验和,对于几 TB 数据通常没有必要。
- -z:适合网络传输,本地磁盘复制反而增加 CPU 开销。
- --delete:删除目标目录中源目录不存在的文件。
- -n 或 --dry-run:仅模拟,不实际修改。
nc
特点:适用于小文件大容量传输。
源机器 192.168.1.1
tar -cf - -C /data/dir01 . | pigz | nc -l 9876
目标机器 192.168.1.2
nc 192.168.1.1 9876 | pigz -d | tar -xf - -C /data/dir02


评论区