远程Linux服务器到远程Linux服务器目录副本。如何?
将目录(带有子目录和文件)从一台远程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"子目录。