it-swarm.cn

远程Linux服务器到远程Linux服务器目录复制。怎么样?

将目录(包含子目录和文件)从一台远程Linux服务器复制到另一台远程Linux服务器的最佳方法是什么?我已经使用SSH客户端(如PuTTY)连接了这两者。我对这两个都有根访问权限。

43
Arun Agrawal

我通常有两种方式使用ssh:

scp -r sourcedir/ [email protected]:/dest/dir/

或者,更健壮,更快(就传输速度而言)的方法:

rsync -auv -e ssh --progress sourcedir/ [email protected]:/dest/dir/

如果需要有关它们如何工作的更多详细信息,请阅读每个命令的手册页。

62
Ycros

我将修改先前建议的答复:

rsync -avlzp /path/to/sfolder [email protected]:/path/to/remote/dfolder

如下:

-a(用于存档)暗含-rlptgoD,因此上面的l和p是多余的。我还喜欢包含-H,它复制硬链接。默认情况下,它不是-a的一部分,因为它很昂贵。所以现在我们有了这个:

rsync -aHvz /path/to/sfolder [email protected]:/path/to/remote/dfolder

您还必须注意斜杠的结尾。你可能想要

rsync -aHvz /path/to/sfolder/ [email protected]:/path/to/remote/dfolder

如果希望源“文件夹”的内容出现在目标“文件夹”中。如果没有结尾斜杠,将在目标“ dfolder”中创建“ sfolder”子目录。

32
user19218

rsync -avlzp /路径/到/文件夹名称@ remote.server:/路径/到/远程/文件夹

9
Ana Betts
scp -r <directory> <username>@<targethost>:<targetdir>
6
Cody Brocious

登录到一台机器

$ scp -r/path/to/top /目录user @ server:/ path/to/copy

5
Flame

如果任务重复发生,请尝试统一。 http://www.cis.upenn.edu/~bcpierce/unison/

3
user11104

签出 scprsyncman scpman rsync

scp file1 file2 dir3 [email protected]:path
2
John Douthat

使用rsync,以便在连接断开时可以继续。如果有什么变化,您也可以更快地复制它们!

Rsync与SSH一起使用,因此您的复制操作是安全的。

2
Ady Romantika

我使用了rdiffbackup http://www.nongnu.org/rdiff-backup/index.html ,因为它可以满足您的所有需求而没有任何花哨的选项。它基于rsync算法。如果只需要复制一次,则以后可以删除目标主机上的rdiff-backup-data目录。

rdiff-backup [email protected]::/source-dir [email protected]::/dest-dir

从文档:

rdiff-backup还保留子目录,硬链接,开发文件,权限,uid/gid所有权,修改时间,扩展属性,acl和资源派生。

这是对scp -p建议的奖励,因为-p选项不能保留所有内容(例如,目录权限设置不正确)

在ubuntu上安装:

Sudo apt-get install rdiff-backup
2
Gunstick

scp可以完成这项工作,但有一点麻烦:与第二个远程目标的连接将使用第一个远程目标上的配置,因此,如果在本地环境上使用.ssh/config,并且您希望rsa和dsa密钥可以工作,您必须将您的代理转发到第一个远程主机。

1
Justin Dossey

好吧,快速的答案是看看'scp'联机帮助页,或者也许是rsync-完全取决于您需要复制的内容。如果需要,您甚至可以在tar-ssh上执行以下操作:

tar cvf - | ssh server tar xf -
1
zigdon

我认为您可以尝试:

rsync -azvu -e ssh [email protected]:/directory/ [email protected]:/directory2/

(并且我假设您位于Host0上,并且您想直接从Host1复制到Host2)

如果上述方法不起作用,则可以尝试:

ssh [email protected] "/usr/bin/rsync -azvu -e ssh /directory/ [email protected]:/directory2/"

如果您已经设置了从Host1到Host2的无密码SSH登录名,则可以正常运行

1
Ram Prasad

理想情况下,作为非root用户:

scp -r src $ Host:$ path

如果您已经在$ Host上找到了一些内容,请考虑将rsync与ssh用作隧道。

/艾伦

0
Allan Wind

如果您真的想获得精确的副本,则可能还需要使用-p开关来进行scp(如果正在使用)。我发现scp 从设备读取,并且cpio遇到问题,所以我个人总是使用tar , 像这样:

cd /Origin; find . -xdev -depth -not -path ./lost+found -print0 \
| tar --create --atime-preserve=system --null --files-from=- --format=posix \
--no-recursion --sparse | ssh targethost 'cd /target; tar --extract \
--overwrite --preserve-permissions --sparse'

我将这种咒语保留在文件中,并使用各种其他方式复制文件。这是通过SSH复制的。其他则用于复制到压缩的归档文件,在同一台计算机内进行复制以及在SSH速度太慢时通过未加密的TCP)套接字进行复制。

0
Teddy

上面提到的scp通常是最好的方法,但是请不要忘记远程目录规范中的冒号,否则您将在本地计算机上获得源目录的副本。

0
Sergey Stolyarov

我喜欢通过ssh传递tar。

tar cf-[目录] | ssh [用户名] @ [主机名] tar xf--C [远程邮箱上的目标]

这种方法给您很多选择。由于您应该禁用root ssh,因此很难复制多个用户帐户的文件,因为您是以普通用户身份登录到远程服务器的。要解决此问题,您可以在仍保留所有权的远程框中创建一个tar文件。

tar cf-[目录] | ssh [用户名] @ [主机名]“ cat> output.tar”

对于慢速连接,您可以添加压缩,z表示gzip,j表示bzip2。

tar cjf-[目录] | ssh [用户名] @ [主机名]“ cat> output.tar.bz2”

tar czf-[目录] | ssh [用户名] @ [主机名]“ cat> output.tar.gz”

tar czf-[目录] | ssh [用户名] @ [主机名] tar xzf--C [远程邮箱上的目标]

0
Chuck