远程Linux服务器到远程Linux服务器目录副本。如何?

时间:2020-03-05 18:55:08  来源:igfitidea点击:

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

解决方案

回答

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

回答

查看scp或者rsync,
man scp
man rsync

scp file1 file2 dir3 user@remotehost:path

回答

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

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

回答

scp -r <directory> <username><@targethost>:<targetdir>

回答

好吧,快速的答案是看'scp'手册页,或者rsync取决于我们需要复制的内容。如果需要,我们甚至可以在tar-ssh上执行以下操作:

tar cvf - | ssh server tar xf -

回答

登录到一台机器

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

回答

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

scp -r src $ host:$ path

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

/艾伦

回答

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

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

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

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

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

回答

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

回答

我认为我们可以尝试:

rsync -azvu -e ssh user@host1:/directory/ user@host2:/directory2/

(并且我假设我们位于host0上,并且我们想直接从host1复制到host2)

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

ssh user@host1 "/usr/bin/rsync -azvu -e ssh /directory/ user@host2:/directory2/"

如果我们已经设置了从host1到host2的无密码SSH登录名,则可以正常运行

回答

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

rdiff-backup user1@host1::/source-dir user2@host2::/dest-dir

从文档:

rdiff-backup also preserves 
  subdirectories, hard links, dev files,
  permissions, uid/gid ownership, 
  modification times, extended
  attributes, acls, and resource forks.

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

在ubuntu上安装:

sudo apt-get install rdiff-backup

回答

如果我们真的想获得一个精确的副本,那么我们可能还想使用-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套接字进行复制。

回答

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

回答

我喜欢通过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 [远程邮箱上的目标]

回答

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

回答

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

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"子目录。