假设一个系统将始终拥有主副本,而另一个系统将始终拥有最近的副本(不到 48 小时),那么通过 ssh 镜像改进 rsync 的最佳技术是什么?
此外,要扩展该方法以处理数十台推动这些变化的机器,必须做些什么?
我想在 python 脚本中使用 rsync。我使用subprocess模块调用它,并使用存储在authorized_key远程机器上的文件中的公钥进行身份验证。
唯一的问题是,当我使用错误的远程用户名使用 rsync 时,会提示我输入密码,这显然会永远停止备份脚本。
rsync如果无法进行身份验证,我是否可以强制退出并显示错误,而不是提示输入密码?
乌迪
我正在使用 rsync 将远程服务器备份到另一台计算机。
在 cron.daily 我有一个文件:
rsync -avz -e ssh root@example.com:/ /mybackup/
Run Code Online (Sandbox Code Playgroud)
它使用公钥/私钥对登录。这在大多数情况下似乎运行良好,但是,我(愚蠢地)只是通过查看我知道每天都在更改的一些重要文件(MySQL 转储)上的日期来真正检查过它。显然,在该文件之后可能会发生错误。
有时它会失败。当我手动运行它时,有时会发生“客户端重置”之类的事情。
记录它以便我可以确定地检查它是否完成的最佳方法是什么?cron 日志没有指示任何错误。我还没有尝试过,但是备份机器上旧版 CentOS 上的 rsync 手册页没有显示 --log-file 选项。我想我可以用 > 重定向标准输出,但我真的不想知道每个文件。我只是想知道这一切是否有效..
谢谢
在我的 Linux 机器中,我有两个目录:
我只需要同步权限而不更改文件内容。我尝试了 rsync,但找不到合适的选项。你能给我一些建议吗?
提前致谢。
编辑
感谢您的建议,我有了这个脚本。它递归地更改子树权限:
#!/bin/bash
cd good
find $1/* | while read DIR
do
chown --reference="$DIR" "/bad/$DIR"
chmod --reference="$DIR" "/bad/$DIR"
done
Run Code Online (Sandbox Code Playgroud)
不是杰作,但对我有用。
只是好奇,当您不在守护程序模式下使用 rsync 时,它使用的默认远程 shell 是什么?根据手册页,它可以通过 rsh 或 ssh 运行。但是手册页中没有任何地方指定如何设置要使用的那个。因此,在运行它时,它会提示我输入密码,但它似乎并未指明正在使用哪个远程 shell。我知道这可能是一个愚蠢的问题,但我真的可以使用一些澄清。谢谢!
CentOS 5.x
Mq 问题似乎与此类似,但我不确定...
我有两台服务器(彼此完全隔离),每台服务器都有一个目录和子目录,这些目录和子目录应该具有完全相同的内容。
例如目录布局可能是这样的:
服务器 A -
/opt/foo/foob/1092380298309128301283/123.txt
/opt/foo/foob/5094380298309128301283/456.txt
/opt/foo/foob/5092380298309128301283/789.txt
/opt/foo/foob/1592380298309128301283/abc.txt
Run Code Online (Sandbox Code Playgroud)
服务器 B -
/opt/foo/foob/1092380298309128301283/123.txt
/opt/foo/foob/5094380298309128301283/456.txt
/opt/foo/foob/5092380298309128301283/789.txt
/opt/foo/foob/1592380298309128301283/abc.txt
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想要一种进行递归检查并确认一切匹配的方法。
我也想避免使用任何第三方工具。
有任何想法吗?
我需要在特定界面上上传文件。这不能通过 iptables 设置,因为我的脚本在多个接口上输出。
这工作正常:
scp -oBindAddress=192.168.100.1 ...
Run Code Online (Sandbox Code Playgroud)
但
rsync --address=192.168.100.1
Run Code Online (Sandbox Code Playgroud)
仍在 eth0 (192.168.10.1) 上发送
我怎么能强制 rsync 使用 192.168.100.1 ?
任何的想法 ?
我有多个源目录,比如/home/me/source1和/mnt/somedisk/source2。我想将它们分别推向类似/home/someoneelse/dest1和/home/someoneelse/dest。我想为此使用一个 rsync 命令,这可能吗?
对于每个目录都是唯一的 N 个目录到 N 个目录呢?
我喜欢将我的基于 linux 的 NAS(像 picutres 之类的小文件)备份到带有 FAT32 的附加 USB 磁盘。为此,我喜欢使用 rsync。
我知道,默认情况下这不会正确工作。rsync 将一次又一次地同步文件。我找到了这个问题和答案:How can I use rsync with a FAT file system?
但是,即使我使用--modify-window=1and--size-only选项,也会再次处理所有文件。日志看起来像,rsync 尝试在 fat32 上设置权限/所有权,这将失败。
rsync: chown "<filename>" failed: Operation not permitted (1)
问题是:有没有办法禁用“chown”命令?
//编辑:
目前我使用以下命令: rsync -a --modify-window=1 --size-only /data/ /mnt/backup/. &