我正在尝试做一个scp(在SuSE LINUX上)并看到一些我没想到的东西。
scp -q -r /home/dir1/mydir host:/var/home/dirx/BACKUPS
如果目标主机下有/var/home/dirx/BACKUPS/mydir
,我会看到该目录下的现有目录(包括修改时间)保持不变。仅创建新目录。
如果目标目录中的文件在源目录中不存在,则会保留它们。
复制之后,我希望将目标目录看作源目录的精确副本。似乎更像是合并。
scp应该如何工作?
答案 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 -"