我有使用 debian 操作系统的 VPS 托管。
我想一次又一次地备份整个系统。
这里有很多关于如何在本地计算机上备份操作系统的问题,但这不是我需要的。我只有 ssh 和超级用户帐户。
我正在使用 archivemount 在 Ubuntu 中挂载几个 tar.bz 文件之一。它对我来说非常有效。
我经常安装和卸载(我处于测试阶段)。我想要一个允许我在不输入密码的情况下卸载的解决方案。这是我当前的脚本:
ARCHIVE=$(zenity --file-selection --filename=/share/);
archivemount $ARCHIVE /media/Archive/
echo "when finished use: sudo umount /media/Archive/"
Run Code Online (Sandbox Code Playgroud)
我的目标是能够快速umount轻松地无需输入密码。我知道添加 fstab 条目就可以解决问题,但在使用 archivemount 时我找不到 fstab 条目的正确格式。
我正在寻找某种方法来解决 Linux 上使用 tar 的增量备份问题。
我有大量数据集(大约 3TB)需要备份到磁带。为此,我在 LTO4 设备上使用 linux tar 命令和 mt / mtx。
由于备份非常非常非常慢(我想我必须将其放在另一个问题中),我别无选择,只能使用增量备份以避免它在生产期间运行。
基本上,它是这样的:
完整的 tar 已制作完成:(级别为 0)
tar --new-volume-script=changetape.sh \
--exclude=.zfs \
--listed-incremental=file.index \
--label=full_DS01 \
-cvf /dev/nst0 \
/mnt/storage/sharename >>filelisting.log 2>>errlisting.errlog
Run Code Online (Sandbox Code Playgroud)每天增量焦油:
mtx -f /dev/sg1 load X #(load correct tape)
mt -f /dev/nst0 eod #(forward to end of data to write a new incremental tar)
tar --exclude=.zfs \
--listed-incremental=file.index \
--label=incremental_DS01 \
-czvf /dev/nst0 \
/mnt/storage/sharename >>filelisting.log 2>>errlisting.errlog
Run Code Online (Sandbox Code Playgroud)重复增量焦油。使用与 2 中相同的过程,因此我总是使用 0 级列出的增量,每次都会进行调整。这应该意味着我总是备份自上次增量更新以来已更改的文件。(与差异相反,您总是与完整更新进行比较)
问题:
经过几次迭代后,增量开始失败,这意味着:备份运行,但似乎认为所有文件都已更改,实际上它执行了完整备份。 …
我花了一整天的时间尝试 rsyncexclude-from和include-from,没有成功,完全迷失了。我找不到的任何示例或帮助都不能满足我的确切但相当简单的要求,而且,要么我无法使它们发挥作用,要么我没有得到我想要的结果,我也无法理解为什么。
我正在尝试设置每日自动备份,经过前几天的尝试,基于这个非常好的网站,我密切关注了增量备份,并且在测试中一切正常,我已经达到了仅对我的 /home/Harry 目录进行空运行,无需排除和包含,而且效果也很好。我还整理了 cron 作业来为我运行它。
在有人建议使用 rsync 和 cron 以外的其他方法之前,请注意,我将安排它在每天晚上 11 点至 30 点运行,并在几分钟后关闭计算机。这在测试中也效果很好。如果当时计算机没有打开也没关系,因为那天没有任何内容可以备份。
为了进一步取得进展,并使用 Mark Sobell 所著的《Fedora 和 Red Hat LInux 实用指南》第 7 版第 607 页中的建议以及其他来源,我想对其进行改进以包括 /home/、/var/和;并排除, , , /sys/ 和./usr/local//etc/ /tmp//var/tmp//usr/tmp//proc/,/var/cache/
请问:首先这些清单合理吗?第二:如何在 rsync 调用中指定此要求?
在回答我的问题后添加。
感谢所有回答我最初问题的人,我现在有了一个可行的解决方案,在下面的脚本中列出。我的经验可能对任何尝试类似事情的人有用,迈克尔霍纳要求我展示出问题的地方。请参阅引用的网站,了解该循环如何工作的完整说明,以及所需的最小存储空间。
我之前的试验是记录在脚本中的注释行中,这就是我用于测试的内容,最初是为了备份一些测试文件,后来尝试将备份保存到外部硬盘驱动器上。我的做法是,当我更改某些内容时,我会通过保留并注释掉原始内容来记录更改,以便在必要时可以再次返回。
以 CA6 开头的长标识符适用于 1 TB 外部硬盘驱动器,我打算在其上存储每日备份,可能以 10 天为一个周期。我还有一个 750 GB 的驱动器,用于每周备份,可能每年一次。您将在脚本接近结尾处看到此循环仍需注意。
我不关心如果发生崩溃是否需要精确恢复系统。我以前拥有三台计算机,没有一台出现故障,但我在外部硬盘驱动器上保留了手动备份,现在只是使用它们作为我仍然需要的任何材料的来源。所以我会从一个简单的安装开始,然后根据需要添加我需要的东西。
正如我的问题所暗示的,我尝试使用 rsyncexclude-from和include-from,但无法掌握必要文件的格式。稍后我可能会尝试将长列表放入文件中。
#!/bin/bash
# Adapted …Run Code Online (Sandbox Code Playgroud) zip 本身可以刷新存档以反映当前的文件系统(例如-FS)。它仅更新具有过时时间戳的 zip 条目。
是否有一种工具可以更新2.zip文件,使其1.zip与底层内容相同,且 I/O 最少?它应该忽略具有最新时间戳的条目。
当然,rsync可以做到这一点,但代价是实际完全读取两个档案(可能是千兆字节),即使大多数相应的条目具有相同的时间戳 - 而且rsync无法识别以不同方式压缩的相同条目。
或者,是否有其他存档格式/工具可以按照我描述的方式促进增量备份?
注意:我知道的另一个明显的解决方案是使用一些基于 FUSE 的文件系统挂载 1.zip,并运行类似zip -r -FS 2.zip /mnt/zip/.
我有一个 xfs 文件系统,其中有许多小文件和几个非常大的文件(~100GB),位于 lvm2 卷上。我想从中进行增量备份。使用诸如 duplicity/rdiff 与 xfsdump 之类的工具进行备份时是否有任何计算开销?简而言之,xfsdump 是否会重用一些 fs 内部信息来显着减少获取增量所需的工作,或者我是否可以使用具有良好功能的东西而不会显着影响性能?
我想备份我的 cups 配置,以便将其转移到新系统。但是cups实际上在哪里存储打印机设置呢?我看过/etc/cups/,但添加新打印机时发生的唯一事情是 PPD 被添加到/etc/cups/ppd/.
编辑:备注,配置实际上已存在/etc/cups/printers.conf,但在 Web 界面中实际添加打印机后延迟写入。这本来就是我找不到它的原因。因此,在进行备份之前,请确保所有内容都已写入。
请注意version-specific问题标题!这个问题不是,如何
这个问题更确切地说是如何
最近,我对我的一个 Debian 机器进行了一次“大更新”(即涉及大量软件包或内核等主要软件包,或两者兼而有之),但它没有“干净地”更新(即没有重大问题)。将来,当我对 Debian 机器应用错误更新时,我希望能够将(a)同一机器上设置的软件包(b)回滚到以前的版本。(之前没有进行图像备份,这很慢。)不幸的是我不知道该怎么做。我知道如何
感谢许多讨论如何做到这一点的网页,包括几个 SE。大多数(包括这个、这个和这个)都会或多或少地进行复杂的变化
dpkg --get-selections > ${PACKAGE_LIST_FILEPATH}dpkg --set-selections < ${PACKAGE_LIST_FILEPATH}可能是关于这个主题的最全面的(也是最脚本化的,我更喜欢的)SE 是这个:它是少数几个推荐备份存储库列表(使用cp -R /etc/apt/sources.list*)和存储库密钥(使用apt-key exportall)的 SE 之一,但它也使用dpkg上面的方法。此 SE建议使用aptitude …
我想创建一些目录的压缩镜像,以便可以从原始目标和远程目标再次同步。
我可以通过两步低效地完成:
rsync -a /source/ /compressed-mirror/
gzip --recursive --rsyncable --force /compressed-mirror/
# later: rsync -a /compressed-mirror/ remote:/another-compressed-mirror/
Run Code Online (Sandbox Code Playgroud)
问题是,如果我重新运行第一个 rsync 来更新镜像,它需要重新复制和 gzip 所有源文件,即使只有其中几个发生了更改。
问题:是否有其他方法可以最大限度地减少每次更新所需的数据传输量和硬盘使用量?
笔记:
我并没有坚持使用 gzip 进行压缩 - 我选择它只是因为它允许重新同步压缩文件。
本地压缩镜像的目的是最大限度地减少与远程镜像进行 rsync 所需的“网络运行”时间,因为源计算机(笔记本电脑)的互联网连接和电源状态都不可靠。本地镜像的某些部分在 rsync 到远程镜像之前会被加密。然后,远程镜像会使用 rsnapshot 进行版本控制,并通过更稳定的互联网连接上传到另一台远程服务器。
更新/想法:
gzip < source/path/file > mirror/path/file.gz。这似乎是迄今为止最有效的解决方案。我正在使用 rsync 移动文件,并且希望能够选择目标文件夹以查看已传输的内容和未传输的内容。
这是我正在使用的命令:
rsync -azh --info=progress2 root@192.168.0.123:/home/backups/ /home/backups/
Run Code Online (Sandbox Code Playgroud)
问题是,rsync创建目录和传输文件似乎相当随机。因此,当我查看时/home/backups/,我看到很多目录,但大多数都是空的。
是否可以指示rsync向下移动目录树,然后仅在分支完全复制后才返回?我希望它进行深度优先搜索遍历。