2013-07-29 100 views
0

我正在嘗試做一個scp(在SuSE LINUX上)並看到我沒想到的事情。scp命令的行爲

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

如果目標主機下/var/home/dirx/BACKUPS/mydir,我看到該目錄下的現有目錄(包括修改時間)都保持不變。只有新的目錄被創建。

如果目標目錄中存在源目錄中不存在的文件,它們將被保留。

複製完成後,我期待將目標目錄看作源目錄的完全副本。看起來像更多的合併。

這是怎麼scp應該工作?

+1

看來你正在尋找rsync,而不是scp。 (rsync也可以通過SSH工作。) –

+0

特別是,請查看--delete選項。 – Craig

+0

讓我看看這個。謝謝 – rpat

回答

2

這是幾乎任何系統中複製命令的標準行爲。存在於兩個位置的文件將使目標被源副本刷新。目標中不存在的文件將從源創建/複製。

僅存在於目標中的文件不會受到影響,因爲它不是copy/cp的作業來刪除「過時」文件 - 它無法知道過時文件是什麼。

如果要刪除目標中的舊/過時文件,則需要使用其他工具。

+0

而「其他工具」是rsync。 –

0

另一個工具是ssh與tar組合。如果你想完全刪除目標目錄並重新創建它,這將做到這一點。

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