当我们把一个目录从一台主机通过 scp 复制到另一台主机的时候, scp 会把符号链接原原本本地复制过去,会浪费目标主机的空间,并且会破坏符号链接:
mkdir from to
cd from
touch test_file
ln -s test_file test_link
cd ..
scp from/* localhost:$(pwd)/to
file to/test_link
当然,可以用 rsync ,但 rsync 最大的问题在于,要求目标主机也支持 rsync ,如果没有呢?
所以就需要用 tar 打包,可以通过管道直接实现这一点:
tar -C from -cf - . | ssh localhost tar -C $(pwd)/to -xf -
scp 也需要对面主机有 openssh-client 。