介绍
scp是最常用的Linux远程拷贝命令, 无论是拷贝单个文件还是文件夹。
但是针对存在软连接的文件夹的远程拷贝要尤为注意, 使用不当可能会导致整个硬盘被塞满。
问题描述
前段时间由于服务器的Linux系统出了问题, 导致所有的文件均不能进行写操作, 为此需进行文件转移, 进行系统重装。
在文件转移的过程中,直接对home目录下的用户数据用scp命令远程拷贝的另外一台服务器, 结果将另一台服务器的硬盘接近打爆。
查看问题发现远程拷贝的用户数据, 有一个文件夹中存在一个递归的软连接, scp的拷贝是递归拷贝, 导致一直拷贝,最终将硬盘塞满。
如何避免
将待远程拷贝的文件夹压缩之后再拷贝, 可以避免软连接的拷贝
利用tar等压缩命令将文件夹压缩 但是如果文件夹无法操作, 则需要用下面的命令替换。
使用rsync命令可以避免软连接问题
# 列出几个参数如下, 具体请man rsync查看 -u, --update: skip files that are newer on the receiver 增量同步,跳过比本地较新的文件 -a, --archive: archive mode; equals -rlptgoD (no -H,-A,-X) 归档模式, 相当于-rlptgoD, 不包括(no -H,-A,-X);最常用的参数 -z, --compress: compress file data during the transfer 输过程中压缩文件数据
参考
Linux系统:scp, rsync命令