linux为什么tar后没有文件夹,Linux上的完全tar备份,不包括某些根文件夹

我有一个问题似乎找不到答案。

我正在尝试编写一个shell脚本来使用tar进行完整的系统备份。显然,有几个文件夹我不想备份(/dev,/mnt,/proc,/tmp,等等)。有相当多的文件夹我不想备份,所以我使用"排除在"标志来保持命令相对干净。

问题是,它不起作用。

以下是我使用的焦油标记:

--create

--file $BACKUP_FILE

--preserve-permissions

--same-owner

--numeric-owner

--listed-incremental $INCREMENTAL_FILE

--level=0

--xz

--directory /

--exclude-caches

--exclude-from $EXCLUDE_FILE

-v

这是我的排除文件:

/dev

/lost+found

/media

/mnt

/proc

/run

/sys

/tmp

/var/spool

/var/run

/var/tmp

当我运行脚本时,它仍然备份那些我不想备份的文件夹。切换到一组"--exclude"标志似乎不起作用(我宁愿不使用它们)。我尝试将"--exclude from$excludeu file"改为"--exclude from=$exclude-file",我确保每行后面没有空格,还有其他一些东西(不记得了,事情开始变得模糊起来)。

我一直在读关于焦油形态的文章,所以看看是否有我遗漏的东西,我还没有发现任何东西。我试着去看看这是否与出于安全目的的沥青剥离导致的割伤有关,但我还没有找到任何东西。

在谷歌搜索时,我发现只有一个人做了同样的事情,并通过从他的排除文件条目中删除前导的"/"来解决问题。我已经尝试过了,但它排除了所有文件夹,而不是根文件夹。我可能在家里有一个"媒体"文件夹,我想备份它,但不备份/media文件夹,所以这不是一个合适的解决方案。

尽管archwiki包含了如何使用tar执行完整系统备份的说明,但您可能希望改用rsync。Archwiki还描述了如何使用rsync执行完整的系统备份。作为根,运行:

rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /* /path/to/backup/folder

-aAX选项集将确保使用"存档模式"。这样可以确保符号链接、设备、权限和所有权、修改时间、ACL和扩展属性得到保留。

请注意,rsync还可以从文件中读取排除模式,因此您的用例可能类似于:

rsync -aAXv --exclude-from=FILE /* /path/to/backup/folder

如果您计划将系统备份到除/mnt或/media以外的其他地方,请不要忘记将其添加到排除模式列表中以避免无限循环。此外,如果系统中有任何绑定装载,也应该排除它们,这样绑定装载的内容只复制一次。

我很感激别人告诉我其他的选择,但是我读到了关于使用rsync的文章,并选择使用tar。

@一个普通人:我能问一下为什么吗?

归根结底,它归结为他们的设计目的(因此是最好的,尽管两者都能做到这一点)。tar设计用于备份/长期存储,其中rsync设计用于镜像/传输文件。tar很容易进行完整/差异/增量备份;让rsync进行差异备份更为重要。另外,我先得到焦油工作(同时尝试两者),我有更多的经验与焦油。

@Aneverydayguy:t ar最初是为运行磁带备份而开发的,它的名字来自于(t)ape(ar)chive。今天,tar实际上只是一个存档工具。是的,您可以使用它来运行备份,因为它包含了这些选项,但是rsync是一个更新的、更通用的工具,因为它在默认情况下执行镜像并内置了远程文件传输,所以能够更好地进行数据备份。但是,我以前从未需要创建差异(或"真正的"增量)备份,所以我真的无法评论。也许这会有帮助:rsync.samba.org/examples.html

如果要通过网络连接(即备份到远程服务器)使用rsync,则添加-z标志以启用数据压缩可能很有用。当然是YMMV。

所以你想想,我在发帖30分钟后找到了一个可能的解决方案。如果我将排除文件项改为以"./"(而不是"/")开头,它似乎可以工作。这很有意义,因为我正在将目录更改为根目录,所以./media==/media。

不过,我现在还不打算把这个标记为答案。我非常希望将排除文件条目保留为"/",而不是"./",这样很明显我将排除根文件夹。是的,我可以在exclude文件中留下一条注释,说明当前目录是根目录,但是如果可以的话,我宁愿避免它。

既然你用的是arch,你看过archwiki上关于这个主题的帖子吗?您可能会对rsync这一部分感兴趣,因为它完成了大部分工作,而且还支持增量备份(只支持已更改的内容)。我可能错了,但我相信焦油每次都会产生一个全新的焦油球。

是的,我有。我选择tar有多种原因(它可以执行增量/差异备份)。我还阅读了wiki.archlinux.org/index.php/full_system_backup_with_tar,这是我正在尝试的方法(排除具有绝对路径的文件)。但是,我看到它和我正在做的事情之间的唯一区别是,它们在标记后有一个"=",在排除的目录后有一个尾随的"/"(据我所知,这是我不想要的,因为它将复制文件夹而不是内容,我不想复制文件夹周期)和一个不同的标记顺序,所有这些都是我尝试过的。

好啊。我对焦油的了解不足以帮助你。如果您还没有,您可以考虑在arch论坛上发布或在reddit.com/r/archlinus上自我发布。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值