标签: rsync

获取 rsync 以跳过相同大小的文件

我使用以下命令将大量大视频文件复制到外部驱动器。

rsync -Ph --inplace /Volumes/Production/Prefix* Prefix
Run Code Online (Sandbox Code Playgroud)

我们停电了,复制中断了。使用rsync,重新启动它没有问题,但问题是它需要相当长的时间才能恢复到原来的状态。它会遍历每个文件,看起来就像读取了整个文件。据报道,当它再次开始复制时,它的速度比平常快大约 3-5 倍。

这段时间它到底在做什么?是通读整个文件并将其与源文件进行比较吗?或者它正在做其他奇特的事情?有没有办法让 rsync 更快地跳过已完成的文件?例如告诉它只检查具有不同文件大小的文件或其他文件?

unix rsync

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

Rsync 用于将 4TB 从 SMB 同步到 USB 卷“主机名问题”

我在 MacOS 10.11.6 上遇到 rsync (3.1.2.) 问题,因为我不知道如何正确输入主机名。我的方法是这样的:

$ sudo rsync -vaE --progress smb://company-nas/old_Projects/old_Projects_11 /Volumes/old_Projects_11
Run Code Online (Sandbox Code Playgroud)

我得到的是:

ssh: Could not resolve hostname smb: nodename nor servname provided, or not known
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: unexplained error (code 255) at io.c(226) [Receiver=3.1.2]
Run Code Online (Sandbox Code Playgroud)

rsync file-transfer filesystems smb macos

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

使用 rsync 备份 ZFS 池

我目前有一个 FreeNAS 盒子来存储我的个人文件。我想要一个异地备份,但我不愿意花钱购买第二台能够正常运行 ZFS 的计算机。因此我打算使用 进行远程备份rsync

我希望备份中的所有文件保持一致,我认为可以通过首先拍摄递归快照然后使用rsync. 然而事实证明,为每个数据集拍摄了单独的快照。

现在我想知道是否有任何方法可以查看递归快照,包括所有数据集,或者是否有其他推荐的方法来查看rsync整个zpool. 我认为简单地符号链接到.zfs数据集中的文件夹不会起作用,因为我想rsync保留数据集本身中存在的任何符号链接。

根据我收到的评论,我认为我所需的配置的一些细节已经到位。我希望在家中拥有一台 NAS,可以轻松地存放数据,并且知道我永远不会丢失它。对我来说,这意味着在现场有多个副本,在异地有多个副本,在情况变得非常糟糕时有一个离线副本,在意外删除的情况下定期对数据进行快照,以及防止数据错误(例如位腐烂)的方法。事件发生的可能性越小,我就越放松,因为在灾难发生后没有多个数据副本,我就越不关心快照。此外,我更关心旧数据而不是新数据,因为我通常在另一台设备上有一个副本。最后我应该注意到大多数文件不会经常更新。大多数传输将是新文件。

我之前的设置是一组两个带有 4TB 外部硬盘的 Raspberry Pi。我对这个策略失去了信任,但硬件已经可用。经过一番研究后发现,随着时间的推移,防止错误潜入的唯一方法似乎是使用 ZFS 等校验和文件系统以及 ECC RAM 和 UPS 等服务器级组件。对于我的本地副本,我走了这条路。我在镜像中使用 2x4TB 磁盘,并在这里定期制作快照。

该机器应该涵盖除异地和离线备份之外的所有情况。由于我很可能不需要这些备份,因此我不愿意在上面投入太多。因此,我认为我可以使用我已有的 Raspberry Pi 和外部磁盘。我可以使其中一个磁盘始终处于离线状态,而另一个磁盘正在接收备份。定期更换磁盘可以让我对旧数据进行离线备份。

最简单的方法是使用zfs sendreceive到两个池,每个磁盘上一个。然而,Raspberry Pi 与硬盘驱动器的 USB 连接相结合,不会提供zfs(或任何文件系统)非常可靠的操作环境。因此,我预计在此设置中会相当频繁地出现错误。由于我只使用一张磁盘,zfs因此没有任何可靠的方法来从故障中恢复。

这就是我想与 一起使用ext3ext4结合的原因rsync。当然,一些坏位可能会被写入磁盘。就元数据而言,有一些工具可以解决大多数此类问题。如果是数据块,这将导致单个文件丢失。此外,可以使用恢复文件,rsync -c因为这会发现不正确的校验和,并会从本地计算机上的已知良好副本再次传输文件。鉴于硬件不太理想,这似乎是最好的解决方案。

这就是我使用的理由rsync,这导致我想到了如何rsync递归的原始问题zfs snapshot。如果我没有解决您的任何建议,请告诉我,因为我真的愿意接受其他选择。我只是目前不明白它们如何为我提供任何优势。

backup freenas rsync zfs

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

使用 Rsync 时忽略行尾

我想同步两个目录。第一个目录有CRLF正常行尾,第二个目录也有CRLF正常行尾的文件。

问题是,当我执行此代码时:

  rsync -azr --exclude=images --dry-run --delete --checksum --out-format="/%f" /dir1 /dir2
Run Code Online (Sandbox Code Playgroud)

它表明将同步许多相同但具有不同编码的文件,而我只想同步不同的内容文件。

使用diff,可以这样做:

diff --strip-trailing-cr file1 file2
Run Code Online (Sandbox Code Playgroud)

但是我找不到 Rsync 这样的东西。如何仅同步具有不同内容的文件?

linux diff rsync

4
推荐指数
1
解决办法
2044
查看次数

为什么 rsync 创建一个新的子目录?

我在 Cygwin 上使用 rsync,如果这很重要的话,在一个目录下c:\topDir,我有两个文件夹subFolder1subFolder2。每个文件夹都有大约 300GB 的文件,有些相同,有些不同,有些子目录存在于一个文件夹中,而另一个文件夹中不存在。遗憾的是,在复制之前无法删除subFolder2

我想递归地将所有内容复制subfolder1subfolder2. 从c:\topDir,我运行了以下命令,

rsync -ra --info=progress2 subFolder1 subFolder2
Run Code Online (Sandbox Code Playgroud)

但在将所有内容复制到其中之前,它在 subfolder2 下创建了一个新的子目录, c:\topDir\subfolder2\subfolder1

我需要做什么才能将内容复制到而不将其放入新的子目录中subFolder1subFolder2

rsync

4
推荐指数
1
解决办法
1505
查看次数

rsync:SSH 权限被拒绝(公钥)

我有一台服务器,我通过 SSH 连接到我的密钥文件,例如id_rsa.pub. 我在客户端和服务器端使用 Debian。

我按照教程禁用 root 身份验证和密码使用以提高安全性(通过/etc/ssh/sshd/sshd_config在服务器上配置文件)。

到目前为止,我可以轻松rsync地将我的文件从我的计算机同步到服务器。

几天前, 我使用了一个 cron 作业,为此我不得不在服务器端重置我的 root 密码。

从那以后,我就无法使用rsyncin SSH; 我收到以下消息:

nextcloud@192.168.0.20: Permission denied (publickey).
rsync: connection unexpectedly closed (0 bytes received so far)[sender]
rsync error: unexplained error (code 255) at io.c(235)[sender=3.1.3]
Run Code Online (Sandbox Code Playgroud)

有一些类似的主题,但我认为我的情况有点不同,因为我认为问题是由于在服务器上重置了我的密码。我也在 Ask Ubuntu 网站上问过一个问题,但我认为这里的人可能更擅长权限问题。

我不知道如何解决这个问题(我在终端命令中管理了一点,但我不是计算机专家)。请问你能帮帮我吗?

仅供参考,请找到调整/etc/ssh/sshd_config不使用密码的教程:

#Uncomment or add the following line. 
#This allows the server to give its DSA footprint in case of an ssh connection.
HostKey /etc/ssh/ssh/ssh_host_dsa_key …
Run Code Online (Sandbox Code Playgroud)

linux ssh rsync cron permissions

4
推荐指数
1
解决办法
8908
查看次数

我需要做什么才能在 Windows 上进行 rsync 以使其在 Linux 上的文件名中保留特殊字符?

我们正在将所有服务器的异地备份实施到远程 Linux 服务器。我们rsync通过 SSH使用。我发现 ñ、ö、ô 和 ã 等字符在 Linux 服务器上被下划线替换。我不介意它是否会更改文档文件名中的这些字符,但是当它将语言包从 重命名Español.clx为 时Espa_ol.clx,可能会给我们带来更多问题。

我当前的命令行是:

rsync -v -rlt -z --chmod=a=rw,Da+x -u --delete -e "ssh -i <keyfile>" <source> <destination>
Run Code Online (Sandbox Code Playgroud)

我需要做什么不同的事情才能正确复制特殊字符?

编辑:对于将在本地进行的初始同步,在机器移到异地之前,我启用了 SAMBA。我能够将文件从 Windows 复制到 Samba 共享,保留原始文件名,尽管它在 Linux 目录列表中看起来不同,即têst变为têst. 这些文件在运行时会被 rsync 删除,因为它与文件名不匹配。

windows linux rsync character-encoding

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

当文件名包含双引号时如何使用 rsync?

我正在尝试将目录 my_dir/ 的内容从 /home 同步到 /backup。该目录包含一个文件名,其中包含双引号,例如 to"to。这是我的 rsync 命令:

rsync -Cazh /home/my_dir/ /backup/my_dir/
Run Code Online (Sandbox Code Playgroud)

我收到以下消息:

rsync: mkstemp "/backup/my_dir/.to"to.d93PZr" 失败: 无效参数 (22)

有关信息,当同步文件名包含单引号、括号和空格时,rsync 运行良好。因此,为什么它会被双引号干扰?谢谢你的帮助。

linux rsync

3
推荐指数
1
解决办法
3086
查看次数

rsync - 设置文件权限问题

我正在使用rsync在两个Ubuntu Lucid Lynx系统之间同步文件夹。

rsync -az --delete -e "-i /home/ruser/.ssh/id_rsa_ruser -p 200" 
          /usr/local/folder/ ruser@192.168.1.2:/usr/local/backup/folder/
Run Code Online (Sandbox Code Playgroud)

一切都很顺利,除了我遇到以下问题:

rsync: failed to set permissions on "/usr/local/backup/folder/README.txt": 
         Operation not permitted (1)
Run Code Online (Sandbox Code Playgroud)

在远程系统 (192.168.1.2)ruser上,tnr group其成员是/usr/local/backup/folder/. 文件夹的权限如下:

drwxrwxr-x 3 tom tnr 188416 2011-06-20 18:04 folder
Run Code Online (Sandbox Code Playgroud)

请帮助我解决错误或通过 rsync 绕过更改权限设置的任何方法。

编辑:- 我通过在源服务器上创建组 tnr 并将其设置为源文件夹的所有者来解决这个问题。

rsync file-permissions ubuntu-10.04

3
推荐指数
1
解决办法
8553
查看次数

带密码的 rsync cron 作业?

我想将 rsync 命令设置为 cron 作业,因此我需要找到一种方法将我的服务器密码自动提供给 rsync。

目前我有一个如下所示的 shell 脚本:

#!/bin/sh
rsync *.rss me@myserver.com:/home/dir --password-file ~/rsync.password
Run Code Online (Sandbox Code Playgroud)

rsync.password文件只包含我的密码。

但是,当我运行脚本时,我得到:

The --password-file option may only be used when accessing an rsync daemon.
rsync error: syntax or usage error (code 1) at main.c(1241) [sender=3.0.7]
Run Code Online (Sandbox Code Playgroud)

谁能让我知道如何解决这个问题,以便我可以开始将 shell 脚本作为 cron 作业运行?

rsync cron cronjob

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