Linux 服务器之间传输文件主要有 scp
rsync
sftp
tar + ssh
。其中 sftp
tar + ssh
较为常用。
sftp
可以使用 ftp 客户端,有图形化界面,交互比较方便。但大量小文件传输时,比较消耗时间。tar + ssh
使用打包、压缩加 SSH,兼顾安全和速度。使用命令行操作。
传输命令
# 将当前目录的文件及文件夹传输至远程服务器,并设置文件的用户和用户组。使用 dd bs=1M 控制传输的数据块,加快传输速度(ssh 默认通常为 8 KB 或 64 KB)。
tar -cz --file - --owner 33 --group 33 . | dd bs=1M | ssh -p 2222 ujcms@192.168.1.100 "tar -xzf - -C /data/"
# 只传输将当前目录的某些文件及文件
tar -cz --file - --owner 33 --group 33 <file1> <dir1> <file2> <dir2> | dd bs=1M | ssh -p 2222 ujcms@192.168.1.100 "tar -xzf - -C /data/"
查看目录大小
在传输过程中,没有反馈信息,可以在接收文件的服务器查看目录大小,掌握文件传输情况:
# 实时统计当前目录大小,速度稍慢
du -sh
# 按磁盘分区统计,速度快。加 . 代表只统计当前所在分区
df -h .