我正在 Mac OS X 上安装 macports,为了从它使用 rsync 协议的存储库中获取二进制文件。不幸的是,似乎无法通过从我的机器直接连接来访问存储库。所以我运行了一个本地代理程序(支持 http、https、ftp 和 socks),现在试图找出如何通过我的代理重定向 rsync 连接。有没有人知道这件事?干杯,
有没有办法在 Windows XP 上安装 rsync 而不必使用 cygwin?
我不想安装 cygwin,因为它需要很多空间。
此外,我需要让它与 Linux 上的 rsync 守护进程通信,因此 Windows 上的 rsync 替代方案无济于事。
我正在尝试以非递归方式将一系列目录的内容复制到另一个远程系统。
/dirA/dir1/file
/dirA/dir2/file
/dirA/dir3/file
Run Code Online (Sandbox Code Playgroud)
DIR1,DIR2,和DIR3包含很多目录,我不希望被复制。在远程主机上复制到 /dirB 保持相同的目录结构。
我试过:
rsync /dirA/*/ host:/dirB/
rsync /dirA/ host:/dirB/
Run Code Online (Sandbox Code Playgroud)
但他们不做我想做的。
我希望 rsync 打印修改和删除的文件。详细选项 (-v) 会打印修改后的文件,但也会打印子目录列表,这可能是因为触摸的目录被视为已修改。由于我从很多子目录同步了很多文件,所以不可能看到实际的变化。
那么,有没有办法不使用 rsync 打印目录?
我不是在寻找grep -v "*/$"答案,因为它也会排除新目录。
我正在使用的命令: rsync -avh --delete /media/data/src /media/data/bkp
并且每次打印所有目录的列表:
src/dir1/
src/dir1/sdir1/
src/dir1/sdir2/
src/dir2/
Run Code Online (Sandbox Code Playgroud)
编辑:好的,经过一些密集的测试......从 ext4 分区同步到 ext4 以及从 NTFS 同步到 NTFS 时,它不会打印所有目录。它只在从 ext4 同步到 NTFS 时才有效.. 和选项-c或--omit-dir-times不改变它。
我正在尝试在执行 rsync 后创建一个日志文本文件。我试过使用命令行:
rsync -av /source/ /dest/ > log.txt
Run Code Online (Sandbox Code Playgroud)
创建的文本文件仅显示源文件夹和目标文件夹之间“不同”的文件名,这与我想要的很接近。
有没有办法让我创建一个日志文件,将“不同”的文件分组到修改和创建的文件中?
是否可以使用 tar 存档(本地)rsync 真正的文件系统(远程)?如果是这样,如何?
问题是我需要正确备份用户/组/权限设置,虽然我在远程有 root 访问权限,但我想避免在本地机器上以 root 身份运行。
我的第一个(也是最重要的)用例是从 Buildroot 生成的 .tar 更新远程嵌入式目标 (ARM9)。我在磁盘上没有“真实的东西”(我可以在作为 root 时生成副本),我想避免传输整个 rootfs 来更新一些文件。
我想使用命令同步远程数据库副本
rsync --relative user@remote:/backup/databases/*.sql /backup/snapshots/
Run Code Online (Sandbox Code Playgroud)
因为它的结果命令创建文件/backup/snapshots/backup/databases/mysql.sql. 如何强制它放入文件/backup/snapshots/mysql.sql?源必须是远程的(它是更复杂脚本的一部分)。
我正在尝试从我的 MacOS 机器 rsync 到在 Windows Azure 上运行的 Ubuntu 服务器。要 ssh 到它,我必须执行以下操作:
$ ssh -i myPrivateKey.key -p 22 me@me.cloudapp.net
Run Code Online (Sandbox Code Playgroud)
我认为密钥文件可能是 X509 公钥,如果有帮助的话(抱歉,我不是系统管理员)。无论如何,我可以使用上述命令成功 ssh。
现在我想将文件同步到远程服务器。我是否需要以.key某种方式提供文件作为选项?
正常的 rsync 命令失败:
$ sudo rsync -avz -e my/file me@me.cloudapp.net:/my/path
rsync: Failed to exec my/file: Permission denied (13)
rsync error: error in IPC code (code 14) at /SourceCache/rsync/rsync-42/rsync/pipe.c(86) [receiver=2.6.9]
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at /SourceCache/rsync/rsync-42/rsync/io.c(452) [receiver=2.6.9]
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来递归比较两个文件夹并输出所有不同(按大小或按时间戳,à la rsync)的文件(和文件夹)的相对路径。
例如,说我有
C:\source\foo\a.txt
C:\source\foo\bar\b.txt
C:\source\foo\bar\c.txt
Run Code Online (Sandbox Code Playgroud)
和
C:\target\foo\a.txt
C:\target\foo\bar\b.txt
C:\target\foo\bar\d.txt
C:\target\foo\baz\
Run Code Online (Sandbox Code Playgroud)
并假设b.txt已在 下更改C:\source,因此更新。
然后给出一个神奇的脚本或命令,比如说magic C:\source C:\target,我希望输出是
foo\bar\b.txt
Run Code Online (Sandbox Code Playgroud)
或者,源文件夹或目标文件夹上的完整路径也是可以接受的:
C:\source\foo\bar\b.txt
Run Code Online (Sandbox Code Playgroud)
如示例所示,我不在乎已删除或创建的文件和文件夹!这应该使这项任务比其他任务简单得多。
我自己是 UNIX 开发人员,不会问这是否是我们正在处理的 UNIX 系统,但是唉。此外,这是针对自定义夜间备份解决方案,其中可靠性和数据完整性是重中之重,因此考虑到几周前我什至无法在批处理脚本中找出 for 循环,我很确定我缺乏正确执行此操作的经验,甚至确定执行此操作的最佳方法。
阅读http://www.howtoforge.com/backing-up-with-rsync-and-managing-previous-versions-history,我了解到 rsync 可以使用类似选项
--dry-run # don't actually rsync (touch) any files
--itemize-changes # list changes rsync _would_ have made
--out-format="%i|%n|" # define an output format for the list of changes
Run Code Online (Sandbox Code Playgroud)
但是,我不喜欢依赖 Cygwin (cwRsync) 来使用 rsync,因为我已经很容易在我的 Cygwin 安装上运行快速而肮脏的实验,经常破坏环境并且需要每隔几周重新安装 …
我运行此命令来检查两个文件夹的相同性并将所有差异放入日志文件中:
rsync -av --delete --checksum --dry-run --stats --itemize-changes --out-format='%t %i %f ' SOURCE DESTINATION | tee log.txt
Run Code Online (Sandbox Code Playgroud)
如果您要比较的文件之间没有差异,则 rsync 直到作业结束才会提及除此之外的任何内容:
发送增量文件列表
获得有关 rsync 所在位置的一些信息会很好。尤其是当您比较大量文件时。是否可以让 rsync 将所有检查打印到终端中,而只在日志文件中留下差异?
PS:--info=progress2没有帮助。