我需要定期备份远程服务器上的目录,该服务器是由研究组织托管的虚拟机。他们强制要求通过 ssh 密钥访问 VM,这一切都很好,只是我不知道如何将 rsync 指向该服务器的 ssh 密钥。
如果密钥文件是~/.ssh/id_rsa
,则 Rsync 没有问题,但是当它是其他东西时,我得到Permission denied (publickey)
.
使用 ssh 我可以指定身份文件-i
,但 rsync 似乎没有这样的选项。
我也尝试将本地机器上的密钥暂时移动到~/.ssh/id_rsa
,但这同样不起作用。
tl;博士
你能用 rsync 指定一个身份文件吗?
我曾经rsync
复制大量文件,但我的操作系统(Ubuntu)意外重启。
重启后,我rsync
再次运行,但是从终端上的输出中,我发现rsync
仍然复制了之前已经复制的那些。但是我听说rsync
可以找到源和目标之间的差异,因此只需复制差异即可。所以我想知道在我的情况下是否rsync
可以恢复上次剩下的东西?
如何将整个目录复制到同名目录中而不替换目标目录中的内容?(相反,我想添加到目标文件夹的内容中)
我正在尝试通过将新生成的文件添加到远程服务器来设置 rsync 以将我的主 Web 服务器同步到远程服务器。
这是我使用的命令:
rsync -avh --update -e "ssh -i /path/to/thishost-rsync-key" remoteuser@remotehost:/foo/bar /foo/bar
Run Code Online (Sandbox Code Playgroud)
但似乎网络服务器实际上传输了所有文件,尽管有“--update”标志。我尝试了不同的标志组合(例如省略“-a”并使用“-uv”),但没有任何帮助。如何修改 rsync 命令以仅发送新添加的文件?
我正在尝试创建一个目录,该目录将包含所有且仅我从 LaTeX 编译的 PDF。我喜欢将每个项目放在一个单独的文件夹中,所有项目都放在一个名为LaTeX
. 所以我尝试运行:
rsync -avn *.pdf ~/LaTeX/ ~/Output/
Run Code Online (Sandbox Code Playgroud)
它应该找到所有的pdf~/LaTeX/
并将它们传输到输出文件夹。这不起作用。它告诉我没有找到“ *.pdf
”的匹配项。如果我省略此过滤器,该命令将列出 LaTeX 下所有项目文件夹中的所有文件。所以这是 *.pdf 过滤器的问题。我尝试用~/
我的主目录的完整路径替换,但这没有效果。
我正在使用 zsh。我尝试在 bash 中做同样的事情,甚至使用列出每个子目录中每个文件的过滤器......这里发生了什么?
为什么 rsync 不能理解我的 pdf only 过滤器?
好的。所以更新:不,我正在尝试
rsync -avn --include="*/" --include="*.pdf" LaTeX/ Output/
Run Code Online (Sandbox Code Playgroud)
这给了我整个文件列表。我猜是因为一切都匹配第一个模式......
如果我跑rsync
带--info=progress2
,我得到这样的输出
Run Code Online (Sandbox Code Playgroud)105.45M 13% 602.83kB/s 0:02:50 (xfr#495, ir-chk=1020/3825)
但是单个数字是什么意思?我在手册页中没有找到匹配的条目。
我正在尝试从一台服务器同步到另一台服务器。服务器具有相同的目录结构,但是当远程服务器中有空格时,我无法让远程服务器正确识别远程服务器上的路径名。
这是详细信息
本地目录是
mnt/xlses/split/v2/name with space
Run Code Online (Sandbox Code Playgroud)
远程目录是
mnt/xlses/split/v2/name with space
Run Code Online (Sandbox Code Playgroud)
我已经尝试了所有我能找到的最新尝试是
rsync --size-only -avzPe ssh /mnt/xlses/split/v2/name\ with\ space/ root@myserver.com:/mnt/xlses/split/v2/"name with space"
Run Code Online (Sandbox Code Playgroud)
当它运行时,它报告的第一件事是它正在创建一个新目录
我打断它,看到有一个新目录
mnt/xlses/split/v2/name
Run Code Online (Sandbox Code Playgroud)
我的所有文件都在该目录中
我期待他们在
mnt/xlses/split/v2/name with space
Run Code Online (Sandbox Code Playgroud) 我想从一个本地驱动器到另一个本地驱动器制作大量文件的全新副本。
我读过 rsync 在通过网络将文件发送到远程机器时对文件进行校验和比较。
在两个本地驱动器之间复制文件时,rsync 会进行比较吗?
如果它确实进行了验证 - 这是一个安全的赌注吗?还是逐字节比较更好?
是否可以使用 rsync 比较两个目录并仅打印差异?有一个试运行选项,但是当我将详细程度增加到一定程度时,会显示每个比较的文件。
ls -alR
并且diff
在这里没有选择,因为源中有硬链接使每一行都不同。(当然,我可以用 perl 删除此列。)
我想知道如何使用 rsync 递归同步到文件夹,但我只需要更新新文件或更新的文件(仅内容,而不是所有者、组或时间戳),并且我想删除源中不存在的文件.