我有一个 bash 脚本,它包含 rsync 的两个目录。有时会发生变化,很可能什么都没有。
我只想在 rsync 实际进行更改(添加/更新文件)时运行命令。否则我只想跳过它。是否有我应该查看的返回响应?
我想使用 rsync 从远程服务器复制文件。我想要
我的任务是通过 WAN 进行异地备份工作。两个存储盒都是基于 FreeBSD 的运行 ZFS 的 NAS 盒。
每周一次或两次,15-60 演出的摄影数据被转储到办公室 NAS。我的工作是找出如何使用非常慢的 DSL 连接(约 700Kb/s 上传)尽可能可靠地在场外获取这些数据。接收盒的形状要好得多,下行速度为 30Mb/s,上行速度为 5Mb/s。
我知道,在异地携带硬盘驱动器可以更快地移动数据,但在这种情况下它不是一种选择。
我的选择似乎是:
rsync 是一个久经考验的解决方案,并且具有在某些事情中断时恢复发送的非常重要的能力。它的缺点是迭代许多文件并且不知道重复数据删除。
ZFS 快照发送可能会传输更少的数据(它对文件系统了解更多,可以执行重复数据删除,可以比 rsync 更有效地打包元数据更改)并且具有正确复制文件系统状态的优点,而不是简单地复制单独的文件(这更占用磁盘空间)。
我很担心 ZFS 复制性能 [1](尽管那篇文章已经发布了一年)。我还担心如果出现问题,能否重新开始传输——快照功能似乎不包括这一点。整个系统需要完全不干涉。
[1] http://wikitech-static.wikimedia.org/articles/z/f/s/Zfs_replication.html
使用任一选项,我应该能够通过将流量路由到指定端口,然后在路由器上使用 QOS 来降低流量的优先级。我需要避免在每次传输期间对两个站点的用户产生重大负面影响,因为这需要几天时间。
所以……这就是我对这个问题的看法。我错过了任何好的选择吗?有没有其他人设置过类似的东西?
当使用 SSH 将 rsync 连接到远程服务器时,如何在远程路径中转义空格等?一个简单的反斜杠转义本地 bash 提示符的空间,但在远程机器上,该空间被读取为路径中的中断,从而标记该路径的结尾。
因此,当我这样rsync -avz /path/to/source/some\ dir/ user@host.tld:/path/to/dest/some\ dir/做时,远程服务器正在读取它/path/to/dest/some/,因为它无法远程找到该目标,因为实际目标是“某个目录”而不仅仅是“某个”。
如果我尝试相同的命令并转义反斜杠和空格以通过本地 bash 提示符并维护远程服务器的反斜杠(总共三个反斜杠:)/path/to/dest/some\\\ dir/,它确实将反斜杠发送到远程服务器,但远程服务器然后将路径解释为/path/to/dest/some\/而不是/path/to/dest/some\ dir/仍然剥离空格和它后面的字符。
如果我尝试用引号包裹路径,它的行为方式几乎相同,有效地在空格处切断路径。所以它也只能通过本地 bash 提示。
最初我使用的路径中有一个“ - ”(空格-连字符-空格)段,远程服务器返回一个错误rsync: on remote machine: -: unknown option,这是整个空间转义努力的开始。
那么我必须做些什么才能使远程服务器正常工作,而不必从远程路径中删除空格或其他错误字符(如连字符)?
我正在尝试传输大约 10 万个文件,总共 90GB。现在我正在使用 rsync 守护进程,但它的速度很慢,只有 3.4mb/s,我需要多次这样做。我想知道我有哪些选项可以最大程度地通过互联网实现 100 兆位的连接并且非常可靠。
我的任务是在服务器(两个不同的主机)之间迁移我们的站点之一。两个环境都是linux。
该站点流式传输视频,因此服务器当前充满了媒体文件(图像和视频)。我的第一个想法是我们会使用 rsycnc 来传输所有内容,但我希望尽可能高效并尽快完成所有工作。我想你们中的一些人可能对如何加快进程有建议,或者 rsync 是否是这里的正确选择。
提前致谢。抱歉我对系统管理员的知识有限...
编辑:我们在一个基本的 LAMP 堆栈(centos)上运行,并在机架空间上移动到红帽)。
似乎有很多关于此的 SF 和 SO 问题,但似乎没有一个符合我的要求。
source_dir/
some_dir/
another_dir/
some_file.php
some_other_file.txt
include_this_dir/
include_that_dir/
yet_another_dir/
Run Code Online (Sandbox Code Playgroud)
所以我想 rsync 其中两个目录,同时排除其余的。排除这两个目录以外的所有目录很重要,因为可能有其他文件在以后添加到 source_dir 中,需要在未明确列出的情况下将其排除。
我试过:
rsync -av --dry-run --delete --exclude="source_dir/*" (or just "*") --include-from="include.txt" source_dir dest_dir
Run Code Online (Sandbox Code Playgroud)
我的 include.txt 有
include_this_dir/
include_that_dir/
Run Code Online (Sandbox Code Playgroud)
我也尝试添加
source_dir/
Run Code Online (Sandbox Code Playgroud)
没有喜悦。什么都不包括在内。
我使用以下命令维护我的电子邮件帐户的备份:
sudo rsync -av --delete --progress -e "ssh -p pNumber" --rsync-path="/usr/bin/rsync" /vmail/ user@my_backup_server:/home/user/backups/vmail/
来源:大多数电子邮件文件夹归用户所有vmail。
目标(备份服务器):系统没有名为 的用户vmail。
我的问题是,即使目标机器没有名为 的用户,上述命令是否会保留文件和目录权限vmail?即使两台机器之间的用户名不同(备份服务器上缺少一些用户名),是否可以将文件和权限从目标完全恢复到源。
这是我想要做的:
从本质上讲,将文件从一个网络存储设备同步到另一个网络存储设备。
解决方案是将源网络存储 rsync 同步到本地机器。然后从本地机器 rsync 到目标网络存储。
但它只是击中了我。我需要在本地计算机上删除从源网络存储中删除的文件。rsync 是否会镜像它们,删除不在目标上的文件?或者它只是减少了所需的数据传输量?
希望我说清楚?