如何制作一个根文件系统的 tar 备份?

7

我已将Linux安装在SD卡上,并使用以下命令安装rootfs:

tar xpjf rootfs.tar.bz -C /mnt/rootfs/

现在,我对rootfs进行了一些更改,希望创建一个备份,以便可以使用与上述相同的命令。我尝试使用以下命令:

tar cpjf rootfs.tar.bz2 /mnt/rootfs
and
tar cpjf rootfs.tar.bz2 -C / mnt/rootfs
I also tried
tar cpjf rootfs.tar.bz2 /mnt/rootfs/*

尝试过:

cd /mnt/rootfs
tar -cvpjf rootfs.tar.bz2 --exclude=/rootfs.tar.bz2 .
tar: ./rootfs.tar.bz2: file changed as we read it

但是最终我得到的存档文件系统中有两个级别,即mnt/rootfs/files。我做错了什么?

这里有很好的回答:https://help.ubuntu.com/community/BackupYourSystem/TAR - Setop
1个回答

14

这是因为它从当前工作目录开始,你可以这样操作:

cd /mnt/rootfs
tar cpjf /rootfs.tar.bz2 .

这应该会在 /mnt/rootfs/ 目录下创建一个以其为根目录的存档文件 /rootfs.tar.bz2。


2
不要使用 *。这可能会在文件名为“--filename”之类的文件中失败。相反,请使用 ./* - Ambroz Bizjak
另外,值得注意的是,./*(和*)可能无法捕获以点开头的文件名。 - Ambroz Bizjak
1
压缩并打包当前目录到/rootfs.tar.bz2文件。 - Ambroz Bizjak
@alex88 你真的应该把那个改成一个点,这是唯一在所有情况下都能正常工作的解决方案。 - Ambroz Bizjak
10
tar cpjf /rootfs.tar.bz2 -C /mnt/rootfs . 的意思是“在路径 /mnt/rootfs 下,将当前目录(.)下的所有文件和子目录打包成一个名为 /rootfs.tar.bz2 的文件”。其中参数 -C 表示“进入 <path> 目录后再执行...”,更简单的说法是“进入 <path> 目录并以该目录作为根目录,然后执行后续命令”。 - sabgenton
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接