我有两个分区:
/dev/sda
安装为/
/dev/sdb
已安装 ias/stuff
我想复制一切从/
到,/stuff/backup
但我还希望符号链接更新为指向/在/stuff/backup
。
例如,如果我有一个如下的符号链接:
/path/to/some/link -> /path/to/the/real/file
备份后它应该看起来像这样:
/stuff/backup/path/to/some/link -> /stuff/backup/path/to/the/real/file
我用 Google 搜索了一下但似乎无法弄清楚。
答案1
从讨论来看,在我看来,tar 是最好的工具,因为它可以保留链接。我还建议从实时 CD 执行此操作。您需要挂载 ubuntu 根分区并将 cd 放入其中。
如果要备份数据库,请使用数据库工具,例如 mysqldump
从正在运行的系统(非实时 USB):
注意:在运行此命令之前请检查这些排除项,请参阅下文了解详细信息。
最小排除项是/proc
/tmp
/mnt
/dev
其他/sys
项是可选的,但会显著减少备份的大小
cd / # THIS CD IS IMPORTANT THE FOLLOWING LONG COMMAND IS RUN FROM /
tar -cvpzf backup.tar.gz \
--exclude=/backup.tar.gz \
--exclude=/proc \
--exclude=/tmp \
--exclude=/mnt \
--exclude=/dev \
--exclude=/sys \
--exclude=/run \
--exclude=/media \
--exclude=/var/log \
--exclude=/var/cache/apt/archives \
--exclude=/usr/src/linux-headers* \
--exclude=/home/*/.gvfs \
--exclude=/home/*/.cache \
--exclude=/home/*/.local/share/Trash /
这将压缩档案,它是完全可移植的,位于/backup.tar.gz
这些选项的含义:来自https://help.ubuntu.com/community/BackupYourSystem/TAR
tar - 是创建档案的命令。它由紧随其后的每个字母修改,每个字母的解释如下。
c—创建一个新的备份档案。
v - 详细模式,tar 将会把它正在执行的操作打印到屏幕上。
p - 保留存档中文件的权限以便稍后恢复。
z-使用“gzip”压缩备份文件以使其更小。
f - 指定存储备份的位置,本例中使用的文件名为 backup.tar.gz。它将存储在当前工作目录中,即您使用 cd 命令时设置的目录。
\ 只是在下一行继续命令,我为了清楚起见添加了它们。
这--exclude
应该是不言而喻的,但它排除了那些目录。
您可以使用该--one-file-system
选项,而不是 /proc、/sys、/mnt、/media、/run 和 /dev 的所有排除项,但是,如果您有单独的 /boot 或 /home (或其他分区),则需要将其添加到存档中。
您可以排除您知道不需要的目录,即没有编辑/usr/share
或类似内容。
要查看内容,请参阅如何在不从命令行提取的情况下查看 tar.gz 文件的内容?
你可以使用 vim / gvim 查看文件内容,并使用 zdiff 列出差异
编辑:来自评论“它在显示以下内容时中途崩溃:/lib/plymouth/themes/ /lib/plymouth/themes/ubuntu-text/ tar: /: 文件已更改,因为我们在 mini-PCIe SSD(Sata II 通道)上读取它 10 分钟后。这需要一些时间进行微调”
发生这种情况是因为文件系统正在使用中,因此如果在 tar 期间将更改写入磁盘,您将收到此类消息。可以通过在 tar 存档中排除尽可能多的内容和/或从实时 CD/USB 运行 tar 来避免此类问题
此外,从评论来看,其他可排除的候选人有:
~/.cache # 这些文件完全没有必要,事实上您可以随时通过删除此目录来恢复磁盘空间。
/usr/src/linux-headers* # 再次,您不需要大量的数据。
~/.local/share/Trash # 查看并删除垃圾或排除此目录
/media # 例如将有 Windows 分区
/var/run/user/$USER/... 是指向 /run 的符号链接,因此我也使用 --exclude=/run。#这将具有可移动设备,例如闪存驱动器和 Android 设备,因此可能被排除。