标签: rsync

通过 ssh 或其他方式进行 Rsync?

我一直在尝试在 OSX 到 Linux 或 Unix 机器上使用 rsync,我对此没有太多控制权。我一直在做这样的事情

rsync -avz -e ssh remoteuser@remotehost:/remote/dir /this/dir/ 
Run Code Online (Sandbox Code Playgroud)

返回的错误是:

bash: rsync: command not found rsync: 连接意外关闭(到目前为止收到 0 个字节)[receiver] rsync 错误:在 /SourceCache/rsync/rsync-37.3/rsync/io.c(452) 找不到远程命令(代码 127) ) [接收器=2.6.9]

但是,在阅读文档后,我开始认为我实际上需要在远程主机上安装一个 rsync 守护程序。

  1. 我必须在远程主机上安装 rsync 服务器吗?
  2. 免费替代品——GUI 或非 GUI——不需要在远程主机上安装任何东西

谢谢!

linux unix rsync macos

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

RSync 到 WebDAV 安装的卷非常慢

我有一个已安装的 WebDAV 商店,我正在使用它来尝试组合我自己的伪 DropBox 设置。但是,上传较大的文件似乎慢(我的带宽图可以正常运行一点,然后长时间停止)。

有没有人试过这个?我想知道它的安装方式是否会让人rsync认为它是本地驱动器或其他东西,因此可能比它知道它是一个已安装的网络驱动器时更健谈?

我正在使用以下命令进行同步:

rsync -rv /source/directory/ /mounted/webdav/directory/
Run Code Online (Sandbox Code Playgroud)

这是使用 MacOS 10.6 运行的,WebDAV 是使用本机安装机制安装的。

mac webdav performance rsync network-shares

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

如何为远程 rsync 进程设置环境变量?

当我使用 rsync 将文件从一台计算机复制到另一台计算机时,两端都会启动一个 rsync 进程。但是,在远程端,shell 初始化文件显然没有被读取,因此我无法为远程 rsync 进程设置环境变量。不幸的是,我需要在一台服务器上进行 rsync,rsync 需要一个环境变量才能工作。我不是服务器上的管理员,因此无法更改全局配置。如何为远程 rsync 进程设置环境变量?

ssh rsync environment-variables remote-connection

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

OSX SSH rsync - 使远程目录保持最新

我主要来自 Windows 背景,迁移到 Mac。我使用过 WinSCP 并喜欢一个名为“保持远程目录为最新”的功能

问题是:OSX 是否有一个等效的 SCP 客户端,可以监控目录的更改并在检测到时上传?我不在乎它是 GUI 客户端还是通过命令行(rsync、ssh 等)。

ssh rsync scp winscp macos

12
推荐指数
2
解决办法
9907
查看次数

像 rsync 这样的文件复制实用程序,带有像 ddrescue 这样的错误处理,用于从有坏扇区或硬件故障的硬盘驱动器中恢复数据

我的硬盘有坏块或扇区,由于潜在的机械问题而无法读取,例如磁盘磁头坏、电机坏或其他一些导致硬盘读取数据极其缓慢且大量数据的问题读取错误。我看到平均 50 KB/秒,有些读取速度低于 10 KB/秒,并且经常完全卡在文件或扇区上,通常很长一段时间 - 从 2-10 分钟或更长时间(当在超时之前使用 rsync)。

速度似乎变化很大,它经常卡在文件上,当它最终“解开”时,它似乎只持续了一小段时间,然后再次卡住。驱动器也非常安静,只有偶尔的文件复制声音(通常是在它卡住/解开一小段时间,然后再次卡住之前)。因此,不存在通常与 HDD 死亡相关的那些邪恶声音。有人建议,这些问题听起来可能是由磁头未对齐引起的,需要大量重新读取才能最终成功读取数据。听起来很有道理,但我离题了......

无论如何,rsync 的问题在于它似乎没有像样的错误处理支持。显然,这并不意味着,以恢复从失败的硬盘中的数据,但所有的所谓的“数据恢复”实用工具在那里,意味着这种使用通常集中在被删除的文件恢复或弄乱了分区,而不是从垂死的硬盘驱动器上复制文件。显然,已删除的文件恢复不是我需要的,所以也许您可以理解我对无法找到我所追求的内容的失望。

自然,这就是您可能会说“您应该使用 ddrescue!”的地方。好吧,这一切都很好,但我已经备份了大部分数据,所以我只想恢复某些文件。我不关心尝试像 ddrescue 那样逐块恢复完整分区。我只对拯救特定的文件和目录感兴趣。

理想情况下,我想要的是 rsync 和 ddrescue 之间的某种交叉:允许我将源和目标指定为 rsync 等普通文件的目录(而不是 ddrescue 要求的两个完整分区),并可以通过以下方式跳过文件初始运行中出现错误,然后允许我在以后的运行中尝试恢复那些有错误的文件(当然,命令略有更改),甚至可能提供一个选项来指定重试尝试的次数……就像ddrescue 如何处理块,只有我想要一个可以像 rsync 一样处理特定文件/目录的实用程序。

那么我是在这里做白日梦,还是有什么东西可以做到这一点?或者,甚至可能是一种使 rsync 或 ddrescue 以这种方式工作的方法?我真的对任何可能有效的解决方案持开放态度,只要它们让我选择我想要“拯救”的文件,并且可以在初始运行时跳过有错误的文件,然后再尝试/重试这些错误。

到目前为止,我已经尝试使用以下选项进行 rsync,但它通常会在文件上停留的时间超过超时时间,理想情况下,我只是希望它移动到下一个文件,稍后再返回到它获取的文件坚持。我不认为这是可能的。无论如何,这是我迄今为止一直在使用的:

rsync -avP --stats --block-size=512 --timeout=600 /path/to/source/* /path/to/destination/
Run Code Online (Sandbox Code Playgroud)

hard-drive rsync data-recovery file-transfer ddrescue

12
推荐指数
1
解决办法
7267
查看次数

如何用每日快照制作一个冗余的桌面系统?(btrfs 准备好使用了吗?)

我想配置一个桌面系统,其中家庭文件系统将是冗余的(例如 RAID-1),并且每周都会拍摄快照。我已经用 ZFS 做到了这一点,快照系统非常棒,并且通过发送/接收,您可以轻松地在外部媒体上创建备份。不幸的是,在这一点上,我想要 GNU+Linux 而不是 FreeBSD 或 Solaris,所以我正在寻找好的替代方案的建议。

我认为我的选择是:

  1. btrfs - 它似乎正是我所需要的,它具有快照和命令,可让您轻松复制zfs send. 然而,所有文档都提到它仍然是实验性的。我似乎找不到任何关于其可靠性或可用性问题的实际报告。您能否向我指出有关该问题的任何信息,以澄清这是否是一个可能的选择?我对这个选项有很大的偏好,主要是因为我不想在 btrfs 准备好时重新格式化驱动器,但我没有关于它是否可用的信息,使用它是否是一个愚蠢的想法等等。 问题我无法回答的是“实验性”什么意思
  2. lvm 快照和 ext4 - 最好不要,因为在创建新文件时它会消耗大量空间。创建 200 GB 文件需要 200 GB 可用空间和 200 GB 额外空间用于快照。我也发现它不可靠——失败的元数据重写会导致无法读取的 PV。我想知道 btrfs 在这里会如何比较。
  3. RAID-1 阵列上的单个文件系统 (ext4),带有带有硬链接(如cp -al)的自定义 COW 快照。如果我不能使用 btrfs,这是我目前的偏好。

那么 btrfs 的实验性如何,我应该选择哪个,我还有其他选择吗?如果我不保留外部增量备份怎么办,这会影响我的选择吗?

rsync zfs snapshot lvm btrfs

12
推荐指数
2
解决办法
1608
查看次数

让 rsync 在实际更改文件之前等待确认

我正在本地和远程文件夹之间进行同步。碰巧我通过一个愚蠢的命令丢失了一个文件。

在进行实际文件传输之前,我习惯于一致和您确认(“去?”)的方式。

rsync 有这样的选项吗?(服务器端没有一致)

谢谢!

sync rsync unison

12
推荐指数
4
解决办法
9793
查看次数

如果文件在 rsync 运行时发生更改怎么办?

我正在使用 rsync 复制 ~10GB 的小文件。如果在 rsync 运行时修改了源目录中的文件会发生什么?

rsync

12
推荐指数
2
解决办法
6289
查看次数

使用端口转发时如何恢复大型 scp 文件传输?

我有一台机器在几跳之外,我需要设置端口转发才能传输文件。

编辑:需要明确的是,需要多跳才能访问远程机器。在我的机器上,我设置了一个 VPN,我可以在其中访问 10.255.xx - 这是我可以通过 VPN 连接的唯一机器。一旦登录到 .xx,我就可以连接到其他机器 - .yy 就是其中之一。

从我的机器:

ssh -L 4567:localhost:4567 me@10.255.x.x
Run Code Online (Sandbox Code Playgroud)

然后从那台机器:

ssh -L 4567:localhost:22 me@10.255.y.y
Run Code Online (Sandbox Code Playgroud)

那我可以

scp -P 4567 me@localhost:/path/to/large/file.gz .
Run Code Online (Sandbox Code Playgroud)

我让这个运行过夜,才发现转移在某个时候死了。

我已经看到一些建议使用 rsync over ssh 来恢复传输,但我不清楚如何设置。这可能吗?

ssh rsync file-transfer scp ssh-tunnel

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

如何 rsync 一组子目录?

我有一个如下所示的源目录(在 src 和 bin 目录中有许多子目录):

  • 顶部目录
    • 项目1
      • 来源/
      • 仓/
      • 脚本/
      • 一些文件.txt
    • 项目2
      • 来源/
      • 仓/
      • 目标
        • 仓/
      • 文件.xml

我只想将项目目录下的 bin 目录(即,忽略 top_dir/proj2/target/bin/)及其内容 rsync 到目标目录,使其看起来像这样:

  • 顶部目录
    • 项目1
      • 垃圾桶
    • 项目2
      • 垃圾桶

我可以通过在 include-from 文件中明确列出每个 bin 目录(在我的实际场景中大约有 15 个)来使其工作,但我认为必须有一种方法可以说明我想同步所有 top_dir/ */bin 目录。

rsync

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