具体来说,我希望对呼叫本身中的scp或sftp会话(或其他任意网络呼叫)进行速率限制。
例如,假设我想将 100MB 复制到一台服务器,将 1GB 复制到另一台服务器。我希望能够同时运行这两个,但保持“正常”计算机使用的 QoS - 有点类似于您如何限制 bittorrent 的速率。
有没有办法在不接触网络硬件的情况下做到这一点?
我正在设想类似于:
magic-qos-tool 'scp file user@host:/path/to/file'
Run Code Online (Sandbox Code Playgroud)
或者..
scp -rate 40kbps file user@host:/path/to/file
Run Code Online (Sandbox Code Playgroud) 我目前正在将大约 40 Gigs 的文件从外部磁盘传输到我的硬盘驱动器,并且 rsync 进度输出总是显示类似
... to-check=1100/24094)
... to-check=1099/24094)
Run Code Online (Sandbox Code Playgroud)
但是在转移过程中,第二个数字会增长,而第一个数字永远不会低于 1000。
... to-check=1200/27199)
... to-check=1199/27199)
Run Code Online (Sandbox Code Playgroud)
这让我感到困惑 - 转移何时真正结束?
编辑:好的,在某些时候它结束了。不过,是什么导致了这种行为?
我正在编写一些密集的 rsync 脚本,我真的很想了解我可以使用的选项。一般而言,手册页是提供信息的最佳场所,其文笔密集而准确。一个值得注意的遗漏是show和hide过滤器的描述。它们出现在此表中的以下FILTER RULES部分:
exclude, -指定一个排除模式。 include, +指定包含模式。 合并,。指定要读取更多规则的合并文件。 dir-merge, :指定每个目录的合并文件。 hide, H指定用于在传输中隐藏文件的模式。 显示,匹配模式的S文件不会被隐藏。 保护,P指定保护文件不被删除的模式。 风险,匹配模式的R文件不受保护。 清除, !清除当前的包含/排除列表(不带参数)
唯一的其他参考在规则修饰符描述部分:
s 用于指示规则适用于发送方。什么时候 规则影响发送方,它阻止文件被传输 费雷德。默认情况下,规则会影响双方,除非 --delete-excluded 已指定,在这种情况下,默认规则变为 仅发送方。另请参阅隐藏 (H) 和显示 (S) 规则,它们是 指定发送方包含/排除的替代方法。
这似乎表明它们是相同的,但仅限于发送方。这是唯一的区别吗?这有什么影响?它是否只影响处理删除的方式?
现在,我们有一个中央 Linux 服务器和几个分散在该地区的卫星 Windows 服务器。每隔 15 分钟,Linux 服务器就会从其他服务器(通过 Cygwin 运行 cwrsync 守护程序)rsyncs 文件。但是,其中之一的目录树现在超过 85GB 和 400,000 个文件。这比扫描目录中的更改花费的时间要长得多,超过 15 分钟;与扫描相比,实际传输时间微乎其微。
Windows 有什么东西可以监视特定的树并实时传输任何更改,或者将它们排队每隔几分钟传输一次,而不必每次都对整个树进行批量扫描,并且最好在 Linux 系统上执行此操作通过rsync?lsyncd 似乎适合它,直到我意识到它适用于 Linux,而不是 Windows。
我通常使用图形 SSH 客户端来同步本地和远程目录。而且我必须将所有文件的所有权设置root为www-data.
我可以对 Rsync 做同样的事情,只是我这样做www-data而不是root,这样我就不必在之后设置所有权?
我希望将我的便携式计算机与我的 Maemo 智能手机同步,仅用于我的工作目录(顶级文件夹)中的文件。我该怎么做才能更正我的 rsync 命令以同步源文件夹而不是目录中的文件?
rsync -va --no-r --no-R --no-d /home/Xtian/ /run/media/486D-8336/
skipping directory.
sent 10 bytes received 12 bytes 44.00 bytes/sec
total size is 0 speedup is 0.00
Run Code Online (Sandbox Code Playgroud)
默认情况下,该命令以详细和存档选项开头。然后我尝试关闭递归、相对和目录。换句话说,不要跟随树,不要复制树,实际上甚至不要理会文件夹。
同步我的远程备份时出现错误rsync cannot delete non-empty directory。
我知道原因:我排除了一些文件,当 rsync 尝试删除远程目录时,因为它在本地不存在,它不能,因为它不是空的。如果没有排除,目录将被清空。
我也知道我可以通过使用 --delete-excluded 来解决这个问题,但这不是我想要的。
我想跳过上传某些文件(因为它们对于我的上传速度来说太大了),但我想保留那些我已经上传的文件,如果它们存在于本地。如果它们在本地不存在,则应将其删除。--delete-excluded 将在远程端删除它们。
这也意味着如果一个目录在本地不再存在,即使它包含排除的文件也应该被删除。
是否可以设置 rsync 来完成此操作?
最近,我不得不将 Mac 的文件系统从保留大小写更改为完全区分大小写。我通过使用 CCC 并将数据复制到另一个磁盘,然后返回到新格式化的主磁盘来做到这一点。
现在,我想在我的旧 Time Machine 磁盘上进行 Time Machine 备份,该磁盘托管在我的基于 FreeBSD 的 NAS 上,通过 AFP 导出。但是,我收到文件系统不匹配的错误,因为 Time Machine 仍然具有不区分大小写的 fs。这一次,我不能使用 CCC,因为它不支持 Time Machine 卷的文件级复制。
自然地,我直接选择了 rsync,但这会引发一个问题——如果我使用以下命令运行它:
/usr/local/bin/rsync --super -aEHAXNvx --fileflags --delete /Volumes/Time\ Machine\ Backups/ /Volumes/NewDisk/
Run Code Online (Sandbox Code Playgroud)
它一碰到Backups.backupdb/<machinename>文件夹就开始抱怨,带有failed to set permissions, operation not permitted. 这里的问题是复制 ACL,这是非常严格的:
ll -dle /Volumes/Time\ Machine\ Backups/Backups.backupdb/<machinename>/
drwxr-xr-x@ 19 root staff 646 Dec 23 09:38 /Volumes/Time Machine Backups/Backups.backupdb/<machinename>/
0: group:everyone deny add_file,delete,add_subdirectory,delete_child,writeattr,writeextattr,chown
Run Code Online (Sandbox Code Playgroud)
所以,我-A从上面的命令中删除了,rsync 现在很高兴地移动 GB 的数据。
唉,我也想保留 ACL。这有可能吗?OS X 没有 …
我正在尝试在执行 rsync 后创建一个日志文本文件。我试过使用命令行:
rsync -av /source/ /dest/ > log.txt
Run Code Online (Sandbox Code Playgroud)
创建的文本文件仅显示源文件夹和目标文件夹之间“不同”的文件名,这与我想要的很接近。
有没有办法让我创建一个日志文件,将“不同”的文件分组到修改和创建的文件中?
是否可以使用 tar 存档(本地)rsync 真正的文件系统(远程)?如果是这样,如何?
问题是我需要正确备份用户/组/权限设置,虽然我在远程有 root 访问权限,但我想避免在本地机器上以 root 身份运行。
我的第一个(也是最重要的)用例是从 Buildroot 生成的 .tar 更新远程嵌入式目标 (ARM9)。我在磁盘上没有“真实的东西”(我可以在作为 root 时生成副本),我想避免传输整个 rootfs 来更新一些文件。