恢复递归的scp传输(使用rsync?)


14

我正在通过scp传输每个〜1MB的几千个文件,并且在最初的大约2k个文件之后,我的连接断开了。我想知道是否有一种方法可以从头开始就恢复递归传输。就像是

$ scp -r me@host.com:/datafiles/ ./
... Happy Transfer ...
...     BREAK!     ...
$ rsync -P me@host.com:/datafiles/ ./
... Continue transf...

问题是,如果可能的话,我似乎无法正确获取语法。任何人都可以阐明是否可以这样做吗?

PS。如果在rsync行的“ datafiles”之后指定斜杠,那是否传输目录或其内容?我在搜寻Google时发现评论有冲突。

Answers:


10

如果要从本地计算机同步到远程主机,则可以这样做:

rsync -avzl -e ssh /directory/with/files/ you@host.com:/new/directory/

谢谢。我不认为这有效,因为它将开始列出我的所有文件,但是我没有意识到它正在显示“文件传输”,这仅意味着注意到文件是最新的。正确的是我的转帐被实际(较慢)的转帐取消了。
physicsmichael 2010年

嗯,对我来说ssh -i akey.pem是必需的,我无法-i使用这些命令。
同构

2
如果您尝试恢复大文件,则此选项可能有用:--partial --inplace --no-whole-file
拉斐尔·泽维尔

@kibitzer-一旦它显示了您的文件(在远程服务器上),您又如何开始传输?我的只是构建列表文件,并向我显示该文件以及上传了多少文件。但是它只是挂起而没有继续或进行输出的选项。传输重新开始了吗,还是我需要做些什么才能开始?
masterninja01 2014年

3
-l没有必要。暗示-a
Guido

11

下面的代码应该可以解决这个问题:

rsync --partial --progress --rsh = ssh -r me@host.com:/ datafiles / ./

我以前从未将其用于递归目录,但是当我发短信时,它似乎可以按预期工作。


1
只要您包括-r =),它也可以工作
physicsmichael 2010年

我的大多数rsync传输类型均为“ rsync -ahP something / user @ host:/ somewhere /”。--rsh = ssh完全没有必要。然后,-P也会拖入--partial和--progress。
杀手主义者

1

如果仅添加“ -r”,则列出的rsync命令将起作用。但您也很可能希望使用“ -a”和“ -v”。

关于结尾的斜杠,me@site.com:/ data /等效于/ data / *,换句话说,如果添加斜杠,它将复制所有内容。但me@site.com:/ data将是目录本身[并且自然是其子文件夹]


1

合并kibitzer和Tyler的答案对我来说效果最好:

rsync --partial --progress -avzl -e ssh /directory/with/files/ you@host.com:/new/directory/

(递归同步并显示每个文件的进度)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.