在 Windows 下复制/合并大型目录结构时,是否可以执行类似“全部是”但相反的操作,以便不会覆盖所有现有文件?
使用诸如 之类的工具时有类似的功能rsync,但这不是 Windows 上的本机进程。
我的 Makefile 中有一个命令可以从外部源同步我的书目。如果rsync因为目标文件不存在而失败,则rsync退出并显示错误 23。我可以通过将输出传递到来隐藏错误,/dev/null但这仍然会导致我的 Makefile 退出。如何"Hi"在$(bib_dir)不存在的情况下输出以下 Makefile 代码?
sync_bibliography:
rsync $(bib_dir) bib 2>/dev/null
echo "HI"
Run Code Online (Sandbox Code Playgroud) 如果输入文件已经被 gzip 压缩, rysnc -z 是否有任何压缩优势?我有一个 100GB 的大压缩文件要通过网络跨服务器发送,并且在不同的时间后始终失败(管道损坏)。想知道我是否应该尝试 -z 标志。
我想将我的本地文件与我在服务器上的备份进行 rsync,该备份允许仅通过网关从我现在所在的位置进行访问。所以我想出了以下内容
rsync -avz -r --stats --progress -e "ssh gateway.dot.com ssh server.dot.com:/home/myname/documents/" /home/myname/documents
Run Code Online (Sandbox Code Playgroud)
并且在列出所有文件时正在进行一些通信,但在最后的摘要中显示实际上根本没有文件传输。
Number of files: 270889
Number of files transferred: 0
Total file size: 70343212868 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 7596005
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 7613770
Total bytes received: 17764
sent 7613770 bytes received 17764 bytes 50707.87 bytes/sec
total size is 70343212868 speedup is …Run Code Online (Sandbox Code Playgroud) 我有两个相同型号的驱动器,它们使用 SATA 连接。
使用 对读取速度进行基准测试时hdparm -t /dev/sdX,160MB/s会返回大约速度。使用 对写入速度进行基准测试dd if=/dev/zero of=testfile bs=1M count=500 conv=fdatasync时,140MB/s返回大约速度。
但是,当使用 复制单个 10GB 文件时rsync --progress /mnt/hd1/file /mnt/hd2/file,写入速度仅为35MB/s.
为什么这么慢?我怎样才能让它更快?
我正在使用(尝试)gzip 以可同步的方式压缩 SQL 文件,以便以最小的延迟传输备份。
然而,这似乎不起作用,因为加速总是 1.00。
存档是通过将数据库转储到.sql文件然后发出gzip -f3 --rsyncable file.sql.
接下来,远程机器使用以下标志对上次备份执行 rsync:
rsync -avhhiP --inplace
为什么我的加速比可能是 1.00?我不应该每次都重新创建存档,而是更新它吗?我在有关 --rsyncable 标志使用的在线指南中没有看到此方法的提及。
我在用:
# gzip -V
gzip 1.5
Run Code Online (Sandbox Code Playgroud) 我正在从损坏的 HDD(不是 SDD)复制,其中大约 15% 的文件会导致 I/O 错误。我只想要剩下的 85% 完整文件,并获得损坏文件的列表。怎么做?
cp 在第一次读取错误时停止。scp/rsync 抱怨并删除副本(想要)并退出(不需要)。出现 I/O 错误后无法继续,至少通过阅读 rsync(1) 手册找不到。
我谷歌了很长时间,所有帖子都是关于其他需求的:
感谢您阅读不需要的答案列表!
注意:这是一个物理损坏的磁盘,由适当的诊断工具确认。我也运行了一个彻底的 fsck。
我有 3 台计算机/服务器,我们称它们为计算机 A、计算机 B 和计算机 C。
ssh计算机 B访问。ssh计算机 C访问。所以,我想rsync从计算机 A 到计算机 C 的目录,使用计算机 B(因为只有计算机 B 可以通过ssh计算机 C访问)。我想以rsync一种简单的方式使用,如下所示:
rsync -options /path_to_local IpComputerC:/path_to_remote
Run Code Online (Sandbox Code Playgroud)
我正在考虑一个ssh隧道,但我不知道我是否必须进行本地端口转发或远程端口转发,或者是否必须创建两个隧道:一个从 A 到 B,另一个从 B 到 C?
有什么建议??我真的很感激。
**更新:我做到了!!我创建了一个带有本地端口转发的 ssh 隧道,这意味着我使用机器 A 的本地端口通过机器 B 连接到机器 C 上的远程端口。命令的语法是:
ssh -f -N -L local_port_machineA:ip_machineC:remoteport_machineC user_machineB@ip_machineB
Run Code Online (Sandbox Code Playgroud)
在我的情况下,remoteport_machineC 应该是端口 22,因为我想通过 ssh rsync 目录。
之后,我们就可以在机器A上执行rsync命令了,这样:
rsync -avz -e "ssh -p local_port" …Run Code Online (Sandbox Code Playgroud) rsync有多种选项可以从文件中读取各种配置,这样您就不必将一堆个人--include或--exclude选项链接在一起。所有这些选项(据我所知)从本地计算机上的文件中读取:
--exclude-from=FILE
--include-from=FILE
--files-from=FILE
文档--files-from=FILE甚至澄清您可以将它与本地或远程文件一起使用:
此外,如果在文件前面指定“host:”(主机必须与传输的一端匹配),则可以从远程主机而不是本地主机读取 --files-from 文件。作为快捷方式,您可以仅指定前缀“:”来表示“使用传输的远程端”。
我想知道的是哪里或什么是等价物--filter?我们有--include和--include-from; --exclude 和--exclude-from。但在哪儿--filter-from?(或者最接近的等价物是什么?)
本节上包含/排除模式规则给出了一个使用的模式规则列表中,就好像它们是包含在文件的例子...
+ /some/
+ /some/path/
+ /some/path/this-file-is-found
+ /file-also-included
- *
Run Code Online (Sandbox Code Playgroud)
但我能找到的在文件中使用它们的唯一提及是使用从 amerge或加载的文件dir-merge:
merge, . specifies a merge-file to read for more rules.
dir-merge, : specifies a per-directory merge-file.
Run Code Online (Sandbox Code Playgroud)
我找不到任何提及它是指本地主机还是远程主机上的合并文件,但从我到目前为止的尝试来看,它似乎只适用于远程主机上的文件。
尝试rsync转移时,出现以下错误:
rsync: mkstemp "<filename>" failed: Function not implemented (38)
rsync实际上并没有传输它列出的文件 --progress: 随后的rsyncs 再次从头开始。
目标文件系统是 FAT。
rsync ×10
linux ×2
ssh ×2
command-line ×1
compression ×1
exfat ×1
fat32 ×1
gzip ×1
hard-drive ×1
make ×1
merge ×1
networking ×1
performance ×1
ubuntu-12.04 ×1
windows ×1