标签: rsync

Linux:同步两个目录权限、用户和组并保持文件内容不变

在我的 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)

不是杰作,但对我有用。

linux filesystems rsync

8
推荐指数
1
解决办法
2768
查看次数

在 rsync 守护进程中禁用反向查找

我在通过某些 rsync 模块提供服务时遇到问题 rsync --daemon

这些行来自我的 /var/log/rsyncd.log 文件:

2013/02/08 12:15:28 [13174] name lookup failed for XXX.XXX.XXX.XXX: Name or service not known
2013/02/08 12:15:28 [13174] connect from UNKNOWN (XXX.XXX.XXX.XXX)
Run Code Online (Sandbox Code Playgroud)

从 rsyncd.conf 手册页:

反向查找

控制守护进程是否对客户端的 IP 地址执行反向查找以确定其主机名,用于“主机允许”/“主机拒绝”检查和“%h”日志转义。这是默认启用的,但如果您知道查找不会返回有用的结果,您可能希望禁用它以节省时间,在这种情况下,守护程序将使用名称“UNDETERMINED”代替。

如果全局启用此参数(即使在默认情况下),rsync 会在客户端连接后立即执行查找,因此为模块禁用它不会避免查找。因此,您可能希望全局禁用它,然后为需要该信息的模块启用它。

所以我将以下行添加到 /etc/rsyncd.conf 中的全局 conf

reverse lookup = no
Run Code Online (Sandbox Code Playgroud)

但是,当我停止并启动守护程序时,将这一行添加到日志文件中:

2013/02/08 12:47:17 [13675] Unknown Parameter encountered: "reverse lookup" 
2013/02/08 12:47:17 [13675] IGNORING unknown parameter "reverse lookup" 
2013/02/08 12:47:17 [13676] rsyncd version 3.0.7 starting, listening on port 873
Run Code Online (Sandbox Code Playgroud)

这是我服务器上安装的版本:

rsync 版本 3.0.7 协议版本 30

rsync reverse-dns

7
推荐指数
2
解决办法
1万
查看次数

SSH 上的 Rsync 不存在 tty

我在 Debian 的 root 的 crontab 中使用以下命令。

rsync -vqrlHEAXogDtzhi --log-file=${LOG} --progress --rsync-path="sudo /usr/bin/rsync" --exclude-from=$CONFIG_DIR/excludes -e "ssh -i /home/backups/.ssh/id_rsa" backups@${HOSTNAME}:/ ${BACKUP_DIR}
Run Code Online (Sandbox Code Playgroud)

我得到以下信息:

sudo: no tty present and no askpass program specified
Run Code Online (Sandbox Code Playgroud)

我尝试将 -t 添加到 ssh 命令中,我得到:

Pseudo-terminal will not be allocated because stdin is not a terminal.
Run Code Online (Sandbox Code Playgroud)

我尝试将 -t -t 添加到 ssh 命令中,我得到:

protocol version mismatch -- is your shell clean?
Run Code Online (Sandbox Code Playgroud)

我已经向远程设备上的备份用户添加了一个 .hushlogin 文件,并确认我可以使用远程设备的密钥 ssh 作为备份而没有显示任何内容(登录被隐藏)。我仍然收到这些消息。

请注意,我可以成功地使用密钥 ssh 作为远程设备的备份。

请注意,我的 sudo 没有 -tt 选项。

请注意,以下是在源和目标的 /etc/sudoers 文件中设置的:

backups ALL= NOPASSWD:/usr/bin/rsync
Run Code Online (Sandbox Code Playgroud)

请注意,我的 …

linux debian ssh rsync sudo

7
推荐指数
1
解决办法
1万
查看次数

运行完全静默的 rsync?

我有一个每小时运行的 cronjob,除非出现问题,否则完全沉默。嗯……差不多……

工作的一部分是

rsync --del -Cacqrz public/. user@host.example.com:/target/path
Run Code Online (Sandbox Code Playgroud)

这总是打印“登录”。我怎样才能让它停止?('grep -v' 的缩写;-)

如果我执行以下操作,则不会收到“已登录”消息

ssh user@host.example.com ls
Run Code Online (Sandbox Code Playgroud)

传输当然是 ssh(使用密钥)。

源主机是 OSX 或 Ubuntu(两者都试过,行为相同)。目标主机是某种风格的 Linux。

ssh rsync

7
推荐指数
2
解决办法
2万
查看次数

rsync 在一段时间后意外终止

我在 ssh 会话中运行一个rsync命令nohup,但过了一会儿它返回这个错误:

rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(549) [generator=3.0.9]
rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(549) [receiver=3.0.9]
Run Code Online (Sandbox Code Playgroud)

我没有自己杀死这个进程,我认为没有任何其他进程可以杀死这个进程。我也用nohup. 我使用nohup是因为 ssh 会话因任何原因终止,rsync进程不会终止。

什么导致终止?

操作系统是 Debian Wheezy。

debian ssh rsync nohup debian-wheezy

7
推荐指数
1
解决办法
3393
查看次数

如何“正确”使用 rsync 和 inotify 同步数百万个文件?

假设我有 100 万个文件,文件列表大概是 20MB。如果我只添加一个文件,inotify会告诉rsync传输文件列表和新文件。我的网络不好,我可能不得不限制带宽 ( --bwlimit)。

可能会一次添加多个文件,并且鉴于网络传输速度,可能会同时运行多个 rsync。

这值得么?有没有更好的办法?

rsync inotify

7
推荐指数
1
解决办法
8614
查看次数

rsync : 写入失败 - 设备上没有剩余空间 (28)

我想将文件夹从一台服务器同步到另一台服务器。

但是 rsync 同步失败:

$ rsync -zr --compress-level=9 --delete /var/www/mywebsite/current/web/js login@192.168.1.4:/srv/data2_http
rsync: write failed on "/srv/data2_http/js/8814c77.js": No space left on device (28)
rsync error: error in file IO (code 11) at receiver.c(322) [receiver=3.0.9]
rsync: connection unexpectedly closed (21747 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
Run Code Online (Sandbox Code Playgroud)

但我有足够的空间!

$ du -h /var/www/mywebsite/current/web/js
2.4M    /var/www/mywebsite/current/web/js


df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs          5.0G  3.0G  1.8G  64% /
/dev/root       5.0G …
Run Code Online (Sandbox Code Playgroud)

linux rsync

7
推荐指数
2
解决办法
3万
查看次数

Rsync挂起:将file_list指针数组扩展为N个字节,确实移动了

在将一些文件从本地文件夹传输到 NFS 文件夹后,Rsync 将进入“可中断睡眠”模式。我尝试备份的文件夹包含超过 180GB 的数据。

这是 rsync 在挂起之前输出的内容:

[sender] expand file_list pointer array to 524288 bytes, did move
Run Code Online (Sandbox Code Playgroud)

我正在使用 rsync 版本 3.1.0 协议版本 31 运行 Ubuntu Server 14.04 LTS,并且使用以下选项运行 rsync:

/usr/bin/rsync -rHAXxvvut --numeric-ids --progress {SRC_FOLDER} {NFS_FOLDER}
Run Code Online (Sandbox Code Playgroud)

感谢您的任何提示

linux ubuntu nfs rsync ubuntu-14.04

7
推荐指数
1
解决办法
9574
查看次数

由于管道损坏而无法进行 rsync

我正在尝试通过在两台服务器上停止 Mongo 然后运行以下命令来在生产服务器和开发环境之间镜像大型 Mongo 数据库:

rsync --archive --delete --recursive --verbose --compress --rsh "ssh -t -o StrictHostKeyChecking=no -i key.pem" remoteuser@remotehost:/var/lib/mongodb/ /var/lib/mongodb
Run Code Online (Sandbox Code Playgroud)

它运行良好几分钟,但随后因错误而停止:

receiving incremental file list
./
collection-228--5129329295041693519.wt
inflate returned -3 (0 bytes)
rsync error: error in rsync protocol data stream (code 12) at token.c(557) [receiver=3.1.1]
rsync: [generator] write error: Broken pipe (32)
rsync error: error in socket IO (code 10) at io.c(820) [generator=3.1.1]
Run Code Online (Sandbox Code Playgroud)

谷歌搜索错误表明这是某种网络连接问题,但我能够很好地连接到两台服务器。

如果我重新运行该命令,它会在完全相同的文件处失败并显示相同的错误消息。是什么原因导致此错误以及如何修复它?

rsync mongodb

7
推荐指数
1
解决办法
2万
查看次数

如何使来自远程服务器的 ~2M 文件的 rsync 具有高性能以进行定期备份

我们在远程服务器上有大量文件,我想定期备份到本地系统以获得额外的冗余。一些细节:

  • 远程系统不在我的控制之下。我只有 SSH/rsync 或 FTP 访问权限
  • 远程系统运行 rsync 2.6.6 且无法升级
  • 远程系统最多允许 25 个并发连接,5 个保留用于生产需求(因此,20 个可用)
  • 远程系统包含 2M 文件 - 其中大部分是 100-200K 大小
  • 文件存储在层次结构中

相似:

0123456789/
        0123456
            abc/
                1.fff
                2.fff
                3.fff
            xyz/
                9.fff
                8.fff
                7.fff
9877656578/
        5674563
            abc/
                1.fff
                2.fff
                3.fff
            xyz/
                9.fff
                8.fff
                7.fff
Run Code Online (Sandbox Code Playgroud)

成千上万的根文件夹仅包含一些内部文件夹/文件结构 - 但所有根文件夹都是数字(0-9)。

rsync -aP第一次用直线跑了,结果花了3196m20.040s. 部分原因是因为远程服务器在rsync2.6.6 上,我无法使用 3.xx 中的增量文件功能。编译文件列表需要将近 12 个小时 - 每 10 秒运行大约 500 个文件。我不认为后续运行会花费这么长时间,因为初始运行必须重新下载所有内容 - 然而,即使 12 小时仅用于文件列表也太长了。

文件夹命名分解如下:

$ ls | grep "^[^67]" | wc -l …
Run Code Online (Sandbox Code Playgroud)

backup performance rsync

7
推荐指数
1
解决办法
893
查看次数