scp命令的行为

时间:2013-07-29 19:41:54

标签: linux

我正在尝试做一个scp(在SuSE LINUX上)并看到一些我没想到的东西。

scp -q -r /home/dir1/mydir host:/var/home/dirx/BACKUPS

如果目标主机下有/var/home/dirx/BACKUPS/mydir,我会看到该目录下的现有目录(包括修改时间)保持不变。仅创建新目录。

如果目标目录中的文件在源目录中不存在,则会保留它们。

复制之后,我希望将目标目录看作源目录的精确副本。似乎更像是合并。

scp应该如何工作?

2 个答案:

答案 0 :(得分:2)

这是几乎所有系统中复制命令的标准行为。两个位置中都存在的文件将导致使用源副本刷新目标。将从源创建/复制目标中不存在的文件。

仅存在于目标中的文件不会受到影响,因为删除“陈旧”文件不是复制/ cp的工作 - 它无法知道陈旧文件是什么。

如果要删除目标中的旧/过时文件,则需要其他一些工具。

答案 1 :(得分:0)

另一个工具是ssh与tar结合使用。如果您想完全废弃目标目录并重新创建它,这将成功。

( cd /home/dir1/mydir && tar cf - . ) | ssh host "cd /var/home/dirx && rm -rf BACKUPS && mkdir BACKUPS && cd BACKUPS && tar xvf -"