我了解 rsync 如何在高层次上工作,但有两个方面。对于 S3,没有守护进程可言——好吧,但它基本上只是 HTTP。
看起来有几种方法。
s3rsync(但这只是将 rsync 绑定到 s3)。直截了当。不确定我想依赖第三方的东西。我希望 s3 只支持 rsync。
也有一些 rsync '克隆',如双重性,声称支持 s3 而不说螺栓连接。但它怎么能做到这一点呢?他们是否在本地保存索引文件?我不确定这如何有效。
我显然想使用 s3,因为它既便宜又可靠,但 rsync 是一些工具,比如备份一个巨大的图像目录。
这里有哪些选择?使用 duplicity + s3 而不是 rsync + s3rsync + s3 我会失去什么?
几天前,我注意到一些很奇怪的事情(至少对我而言)。我运行 rsync 复制相同的数据,然后将其删除到 NFS 挂载,称为/nfs_mount/TEST. 这/nfs_mount/TEST是从nfs_server-eth1. 两个网络接口上的 MTU 都是 9000,中间的交换机也支持巨型帧。如果我这样做,rsync -av dir /nfs_mount/TEST/我将获得 X MBps 的网络传输速度。如果我这样做,rsync -av dir nfs_server-eth1:/nfs_mount/TEST/我的网络传输速度至少为 2X MBps。我的 NFS 挂载选项是nfs rw,nodev,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountvers=3,mountproto=tcp.
底线:两种传输都通过相同的网络子网、相同的线路、相同的接口、读取相同的数据、写入相同的目录等。唯一不同的是,一个是通过 NFSv3,另一个是通过 rsync。
客户端是 Ubuntu 10.04,服务器是 Ubuntu 9.10。
为什么 rsync 快得多?如何使 NFS 匹配该速度?
谢谢
编辑:请注意我使用 rsync 写入 NFS 共享或 SSH 到 NFS 服务器并在本地写入。两次我都这样做rsync -av,从明确的目标目录开始。明天我将尝试使用普通副本。
Edit2(附加信息):文件大小范围为 1KB-15MB。文件已经被压缩,我试图进一步压缩它们但没有成功。我tar.gz从那个dir. 这是模式:
rsync -av dir /nfs_mount/TEST/ = 最慢的传输;rsync -av dir nfs_server-eth1:/nfs_mount/TEST/= …serverfault 用户注意:hynekcer 的四条评论在这里回答了这个封闭的问题。然后它在其他评论中被很好地接受为一个定期回答的问题。现在正在投票决定重新开放。
当源和目标都是远程时,rsync 会抱怨:
The source and destination cannot both be remote. rsync error: syntax or usage error (code 1) at main.c(1156) [Receiver=3.0.7]
让 rsync 做到这一点是否存在不可逾越的技术障碍?或者这只是一个尚未实施的情况?在内存中创建一个本地缓冲区来调解两个遥控器之间的传输似乎相对容易,同时保存散列和数据。
我想使用 rsync 将用户文件从一台服务器备份到另一台服务器。但我注意到用户文件夹更改为 root。如何使用 rsync(由 root 运行)保持用户权限?
我有兴趣使用 Amazon S3 来备份我们的 ~ 100gb 服务器映像(通过 Acronis 备份工具创建)
显然,就带宽和成本而言,每晚上传到 S3 的成本会很高。我正在考虑将 rsync 与 S3 一起使用,但遇到了s3rsync。 我只是想知道是否有人有使用这个或任何其他实用程序的经验?
我很高兴使用 rsync 来备份我的服务器,尽管我对--delete-excluded参数有疑问。
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded --rsh=/usr/bin/ssh root@server01:/etc /.snapshot/hourly.0/server01
Run Code Online (Sandbox Code Playgroud)
来自man rsync:
--delete-excluded also delete excluded files from dest dirs
Run Code Online (Sandbox Code Playgroud)
对我来说,一个非英语母语者,这意味着 rsync 将从远程服务器上的实际目标目录中删除排除的目录,所以如果我有/home/backup并且/home/settings在我的排除文件夹中,这些文件夹实际上将从远程服务器中删除。
从其他几个资源来看,它似乎会从本地备份文件夹中删除文件以节省空间。例如,您可以在服务器本身上创建小型备份并排除这些数据,这样您就不会浪费存储空间。
尽管 rsync 只能以一种方式完成它的工作,但对我来说这很重要,因为人们说它可以正常工作,但我不想在拥有删除远程服务器上的文件/目录的软件时冒任何风险。
我正在rsync编写用于目录复制的脚本。我让它只同步新的和修改过的文件或目录,但我不喜欢它复制重命名的文件或目录作为新文件或目录的事实,使文件不同步。我还设置了 1MB 的带宽限制,因为这将在工作时间运行。这是我的脚本:
rsync -zvru --bwlimit=1024 /mymounts/test1/ /mymounts/test2
Run Code Online (Sandbox Code Playgroud)
如果有人重命名某些内容,但仍然只复制新文件或修改过的文件,我如何使文件和目录保持同步?这是有问题的文件
ls "/mymounts/test1/some stuff"
new directory newfile1.txt newfile3.txt renamedFile.txt
ls "/mymounts/test2/some stuff"
new directory newfile1.txt newfile2.txt newfile3.txt renamedFile.txt
Run Code Online (Sandbox Code Playgroud)
或者有没有办法甚至将重命名的文件移动到另一个目录说:
/mymounts/VerControl?
我正在尝试从不可靠的远程服务器同步文件,这意味着连接往往会“随机”失败
rsync:连接意外关闭
rsync 是用 --partial 调用的,所以我希望能够在循环中调用 rsync 直到文件完全传输。似乎没有告诉 rsync 重试的标志。
编写脚本的最佳方法是什么?bash for 循环?
运行 ubuntu 12.04,我想比较 2 个目录,比如 folder1/ 和 folder2/,并复制与 folder3/ 不同的任何文件。还有嵌套文件,因此也应复制匹配的子目录
有没有一个命令可以帮助我?我可以获得正在运行的已更改文件的完整列表:
rsync -rcnC --out-format="%f" folder1/ folder2/
Run Code Online (Sandbox Code Playgroud)
但是 rsync 似乎没有能力将这些文件“导出”到不同的目标目录。我可以将列表通过管道传输到 cp 或其他一些程序,以便复制文件,同时创建目录吗?例如,我试过
rsync -rcnC --out-format="%f" folder1/ folder2/ | xargs cp -t folder3/
Run Code Online (Sandbox Code Playgroud)
但这也不会保留目录,它只会复制 folder3/ 中的所有文件