使用-ror--recursive会导致rsync递归到目录。-a或--archive等于-rlptgoD,所以-a暗示-r。
如果我有目录source/并且dest/我运行:
rsync source dest\nRun Code Online (Sandbox Code Playgroud)\n\n然后rsync跳过source/并且不复制任何内容。如果我运行:
rsync -a source dest\nRun Code Online (Sandbox Code Playgroud)\n\n然后-a暗示-r并将其所有内容rsync复制到。source/dest/
但是,如果我有一个list.txt包含该行的文件source,并且我的目录的完整路径source/是/home/user/source/,并且我运行:
rsync -a --files-from=list.txt /home/user/ dest\nRun Code Online (Sandbox Code Playgroud)\n\n那么rsync只复制source/到dest/但不复制其内容。如果我运行不带选项的命令,也会发生同样的情况-a。
但是如果我运行相同的命令-r:
rsync …Run Code Online (Sandbox Code Playgroud) 我完全知道像这样的问题已经被问过多次。然而,由于阅读各种备份工具的大量文档并不能回答我的所有问题,我认为在这里描述我的场景以获得一些输入是很好的。
我想制定适合我的需求的备份策略。以下是要求的简要概述:
经过一些研究后,有两个计划在大多数情况下似乎都很合适:
使用 borgbackup 我发现两个问题:
与休息:
所以,我的问题是,如何实现适用于上述场景的备份解决方案。borg 和 Restic 是适合这里工作的工具吗?如果是这样,我该如何处理我所描述的问题?如果没有的话,还有其他更好的备份软件吗?
我继承了一个 Azure VM (Ubuntu 20.04),它有一个 7 磁盘 VG,完全被格式化为 ext4 的 RAID5 LV 占用。
我需要进行备份,并希望使用 Azure 备份来为包含 VG 的 Azure 磁盘创建快照。
Azure 磁盘快照在时间点上不一致,因此出于文件系统完整性和 LVM 元数据的原因,我需要在备份运行时冻结存储。我的工作量可以忍受;我正在尝试找出使原始磁盘块暂时不可变的最佳方法。
fsfreeze- 我测试了冻结文件系统、拍摄快照、解冻,然后切换到快照。
在我有限的测试中,这工作正常,当“恢复”的磁盘换回时,我没有看到 LVM 带来任何可怕的情况,但我只能执行这么多测试,并且如果存在 1% 的边缘情况,我的磁盘元数据会丢失会不一致我可能找不到它。
我担心我将活动锁定在如此高的层:在活动时不会发生任何文件系统操作FIFREEZE ioctl,但这是否会阻止 LVM 执行任何类型的较低级别操作,例如元数据更新、RAID 相关活动?
然后我尝试了一下,感觉dmsetup suspend /dev/mapper/my-lvol这是一个更好的解决方案。
测试设置:
fsfreeze
echo 3 > /proc/sys/vm/drop_cachessync ; sync(旧习难改 :)fsfreeze -f /exportdd if=/dev/mapper/my-lvol of=/dev/null status=progress运行dd直至完成。我承认这是有效的,因为我没有通过冻结的文件系统进行访问,但这让我想知道当我假设我的 Azure 磁盘不变时,LVM 是否仍然可以在低级别上执行操作。
dmsetup suspend
echo 3 > /proc/sys/vm/drop_cachessync ; sync …在安装 Linux 时,它会要求选择“挂载点”。我给了它/,但我不知道它的确切含义和目的。
另外,现在我想再创建一个挂载点,/home在我已经安装了带有挂载点的 Linux 的机器上/。是否可以从我当前的 Linux 安装中做到这一点?如果是,步骤/命令是什么?
我对“挂载点”的理解是,当我需要以/home更安全的方式保存我的内容时,如果我当前的 Linux 损坏,它不会被删除。例如,通过将硬盘从 Linux 损坏的机器上分离并连接到新的 Linux 机器上,我应该得到我的/home内容。
我拿起了一个HP Simplesave外置驱动器。它带有一些对我没有用的花哨的软件,因为我不使用 Windows。与当前许多面向消费者的备份驱动器一样,备份软件实际上包含在驱动器本身中。我想保存驱动器的初始状态,以便在我决定出售时可以恢复它。
备份盒本身有点定制:除了硬盘驱动器设备外,它在/dev/sr0. 我认为这个 cdrom 设备的目的是通过 Windows 自动播放位于磁盘本身的备份应用程序进行引导。我不认为它是如何做到这一点的任何保证,因此保留磁盘的确切状态似乎很重要。
该驱动器被格式化为一个 500GB 的 NTFS 分区。
我最初的想法是用来dd转储磁盘 ( /dev/sdb) 本身,但事实证明这是不切实际的,因为生成的文件并不稀疏。这似乎是因为 NTFS 空白空间不是用零填充,而是用 16 个字节的重复序列填充。
我尝试 gzip 输出dd. 这将文件缩小到可管理的大小——第一个 18GB 被压缩到 81MB,而 47MB 用于压缩已安装文件系统的内容——但是在我公认的有点废弃的 Pentium M 处理器上它非常慢。完成第一个 18GB 的时间大约是 30 分钟。
所以我不得不分别转储磁盘状态和分区数据。
我已经转储了分区状态
sfdisk -d /dev/sdb > sfdisk.-d.out
Run Code Online (Sandbox Code Playgroud)我还创建了 NTFS 分区(磁盘上唯一的一个)的压缩映像
ntfsclone --save-image --output - /dev/sdb1 | gzip -c > ntfsclone.img.gz
Run Code Online (Sandbox Code Playgroud)还有什么我应该做的,以确保我可以恢复驱动器的精确原始状态?
我偶尔会更改我的rsnapshot.conf,我想知道是否有任何方法可以进行同步到正常流程以外的位置的测试运行......不是interval. 这可能吗?如何?
我一直在阅读有关使用rsync和rdiff-backup对整个 Linux 系统进行增量备份的文章。我计划通过设置 Linux 系统、对其进行一些更改、擦除所有内容并恢复系统来实践这一点(所有这些都可以在虚拟机中方便地进行)。但在尝试之前,我想澄清一些事情:
感谢您的回答。
作为改进备份方案的一部分,我现在添加了旋转外部硬盘驱动器,使一个始终安全地离开现场,而另一个则在接收备份数据。自然地,为了确保我的备份真正完成,备份将被编写和 cron'd。
我的计划是手动插入并安装硬盘驱动器,然后将其留在那里,直到需要卸载它(再次手动),将其拿走,放入下一个,然后(手动)安装那个。两个驱动器都将挂载到例如 /mnt/backup。
现在,问题来了:如果我忘记插入或安装硬盘驱动器,我不希望备份脚本运行。所以我需要能够在允许脚本运行之前检测是否有设备安装到 /mnt/backup 。我的第一个想法是在(未挂载的)/mnt/backup 目录中放置一个名为例如“NO_DRIVE_MOUNTED”的文件,然后在运行备份例程之前确保它不存在,但这只是感觉很hackish。(同样,将一个名为“BACKUP_DEVICE_READY”的文件放在每个外部硬盘驱动器中并检查该文件是否存在的反面感觉就像黑客一样。)
有没有更好的方法来检测设备是否安装到给定目录?我宁愿避免检查设备本身,因为我的经验是在 Linux 中插入一个驱动器只会将它分配给下一个可用的 /dev/sdX,所以虽然有一天备份驱动器可能是 /dev/sdf,如果我下次连接备份驱动器时插入不同的驱动器,它是 /dev/sdg,这意味着对 /dev/sdf 的测试将失败!我还希望避免特定于设备的标识(例如通过 UUID),以便我可以更轻松、更透明地更换/升级驱动器。
这将在 Ubuntu 10.10 上(如果我拖得够久,可能是 11.04,因为我正在重建整个服务器的过程中),理想情况下,我想要一个简单的单行测试,我可以添加前缀我的备份命令直接在我的 crontab 中(但如果有必要,我也不怕 Bash 脚本)。
我有一个闪存驱动器,让我们命名它 FLASH。
我想,当在我的 mac 上时,当FLASH插入(并自动安装)时,执行特定的脚本并使其~/Documents自动复制到/Volumes/FLASH/Documents(mac 将驱动器安装在/Volumes)。
同一个驱动器,,FLASH(Documents之前用mac情况添加了这个新文件夹),当插入Ubuntu机器时,我希望它自动复制FLASH/Documents到~/Documents(或在安装后自动执行脚本)。
在这些不同的场景中,我应该如何做到这一点?我不想为此使用第三方应用程序,我更喜欢使用两个平台中都可用的核心/内置工具。
backup ×10
rsync ×3
mount ×2
restore ×2
archive ×1
azure ×1
block-device ×1
borgbackup ×1
cloning ×1
command-line ×1
data ×1
file-manager ×1
filesystems ×1
home ×1
linux ×1
lvm ×1
macintosh ×1
ntfs ×1
options ×1
rdiff-backup ×1
rsnapshot ×1
thunar ×1
ubuntu ×1