我正在创建一个 cron 作业来保持两个目录同步。我正在使用 rsync。我正在运行一个 rsync守护进程。我阅读了手册,它说:
RSYNC_PASSWORD
Setting RSYNC_PASSWORD to the required password allows you to
run authenticated rsync connections to an rsync daemon without
user intervention. Note that this does not supply a password to
a shell transport such as ssh.
USER or LOGNAME
The USER or LOGNAME environment variables are used to determine
the default username sent to an rsync daemon. If neither is
set, the username defaults to 'nobody'
Run Code Online (Sandbox Code Playgroud)
我有类似的东西:
#!/bin/bash
USER=name
RSYNC_PASSWORD=pass
DEST="myhost::mymodule"
/usr/bin/rsync -rltvvv …Run Code Online (Sandbox Code Playgroud) 我试过命令:
rsync -v --include-from=/path/to/list.lst /home/user /path/to/backup
Run Code Online (Sandbox Code Playgroud)
list.lst 包含例如
.gnupg/
.pki/
.gnome2/keyrings/
.mozilla/firefox/*.default/bookmarkbackups/
.mozilla/firefox/*.default/bookmarks.html
.mozilla/firefox/*.default/*.db
.mozilla/firefox/*.default/*.sqlite
Run Code Online (Sandbox Code Playgroud)
我在所有字符串上都出现错误:
失败:没有那个文件或目录
当我--files-from为此使用时,我也收到错误消息。有人可以帮我使用通配符吗?
现在我知道您一开始就不应该将 1000 万个文件放入一个目录中。将其归咎于开发人员,但就目前而言,这就是我所处的位置。我们将修复它并将它们移到文件夹组中,但首先我们必须将它们从生产盒中复制出来。
我第一次尝试 rsync 但它会失败得很惨。我认为这是因为在内存中存储文件的名称和路径大于内存和交换空间。
然后我尝试将其全部压缩到 tar.gz 中,但无法解压缩,文件太大错误(60gigs)。
我试图只做一个 tar 来 tar 勒索,但我得到了一个“无法打开:文件太大”
tar c images/ | tar x –C /mnt/coverimages/
Run Code Online (Sandbox Code Playgroud)
额外信息:
/mnt/coverimages/ 是我们要将图像移动到的 nfs 共享。
所有文件都是图像
操作系统:Gentoo
我试图递归地将目录/文件结构从一个目录复制到另一个目录,只保留 html 文件。应该是包含/排除的简单案例,不是吗?
我只想先打印出文件。当我做对了,我会复制它们。
rsync -a --list-only -v SOURCEDIR --exclude='.*' --include='**/*.html'
Run Code Online (Sandbox Code Playgroud)
给我所有的文件。
rsync -a --list-only -v SOURCEDIR --include='**/*.html' --exclude='*'
Run Code Online (Sandbox Code Playgroud)
和
rsync -a --list-only -v SOURCEDIR --include='*.html' --exclude='*'
rsync -a --list-only -v SOURCEDIR --include=*.html --exclude=*
Run Code Online (Sandbox Code Playgroud)
不给我文件。
rsync -a --list-only -v SOURCEDIR --include='*.html' --exclude='*.*'
Run Code Online (Sandbox Code Playgroud)
看起来它给了我整个目录结构和只有 html 文件。但我不想要空目录。
帮助!
在 Mac OS 10.6 上
我想知道在同一命令行中使用多个 rsync 实例将本地服务器上的同一目录备份到远程服务器上的同一目录是否安全?基本上,如果我并行运行以下命令 3-4 次,它会帮助加快速度吗?接收服务器正在使用 rsyncd。
rsync -av /home/directory/ backups@1.1.1.1::Home
我有一个 shell 脚本,它不断在远程系统之间复制大文件(2 GB 到 5 GB)。基于密钥的身份验证与代理转发一起使用,一切正常。例如:假设 shell 脚本在机器 A 上运行并将文件从机器 B 复制到机器 C。
“scp -Cp -i 私钥 ssh_user@source-IP:source-path ssh_user@destination-IP:destination-path”
现在的问题是进程 sshd 不断占用 CPU 负载。
例如:目标机器(即机器-C)上的 top -c 显示
PID 用户 PR NI VIRT RES SHR S %CPU %MEM TIME+ 命令 14580 ssh_user 20 0 99336 3064 772 R 85.8 0.0 0:05.39 sshd:ssh_user@notty 14581 ssh_user 20 0 55164 1984 1460 S 6.0 0.0 0:00.51 scp -p -d -t /home/binary/instances/instance-1/user-2993/
这导致高平均负载。
我相信 scp 占用了太多 CPU,因为它正在加密/解密数据。但是我不需要加密数据传输,因为机器 B 和机器 C 都在局域网中。 …
我在通过某些 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
我在 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)
请注意,我的 …
我有一个每小时运行的 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。