微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何格式化rsync -exclude-from文件,以排除文件/目录,但将其他文件包含在同一path中

有很多关于rsync的在线howto,但经过几天的努力之后,反复阅读man页面,并从一个排除文件删除,我需要一个手。

我已经创build了一个自定义的本地init脚本,将根文件系统加载到ram中,并且为了支持这个环境,我构build了一个名为ramsync的实用程序,它在/(在ram)和/或“备份”磁盘之间执行rsync。 当我只想排除许多path和内容时,这一切都是顺风顺水的。 我已经使用这个系统一段时间了,但是在阅读了关于rsync的更多内容之后,我想扩展实用程序以便轻松地调整模式的conf文件,以包含一些文件。 所以这就是我遇到麻烦的例子。

在ram上运行时安装软件,与正常安装一样简单,然后调用ramsync来拷贝磁盘上的更改。 这样安静一点,直接在磁盘上进行所有的安装/装载操作,因为你只需要在文件io完成后写下最后的状态。 (做一个OpenStack计算节点构build超过一个小时的差异)

我的ramsync的认排除如下所示:

如何读取CF卡的供应商ID

Linux:WGET – scheme缺less使用-i选项

看看哪些文件正在增长在一个目录在Linux

如何在bash / linux脚本中执行相同的循环1小时?

什么是猫,在这里做什么?

cat > /tmp/excludes << EOF /boot/ /boot/* /dev/* /dev/pts /dev/ /media/* /mnt/ /mnt/* /proc/* /proc/ /sys/* /sys/ /tmp/* /tmp/ /run/* /run/ /var/cache/ /var/cache/* /var/log/ /var/log/* /var/run/ /var/run/* /var/lock/ /var/lock/* /var/tmp/* /lib/modules/*/volatile/.mounted /etc/apparmor.d/cache/* /ramsync/* /etc/mtab EOF

(/ ramsync是ram中磁盘的挂载点)

我通过rsync的“–exclude-from'/ tmp / excludes'”来使用这个列表。 进一步阅读rsync的手册页使我相信exclude / include的概念有点误导,因为从包括和排除使用 – 和+操作符都可以包括和排除 – 包括和排除 – 并且包括/如果不包含运算符,则排除只是认的认值。 我的阅读和我认为在理解rsyncfilter模式和parsing方面取得的进展使我重新构build了这个模式文件

cat > /tmp/excludes << EOF - /lib/modules/*/volatile/.mounted - /etc/apparmor.d/cache/*** - /etc/mtab - /var/cache/*** - /var/lock/*** - /var/log/*** - /var/run/*** - /var/tmp/*** - /boot/*** - /dev/*** - /media/*** - /mnt/*** - /proc/*** - /sys/*** - /tmp/*** - /ramsync/*** - /run/*** EOF

然后,我试图应用一些包括这个来获取一些文件和目录在/ var / log /中,但只有我指定的。

所有序言问我的问题:

我怎样才能排除几乎所有的“/ var / log / *”

/ var / log / nova /(目录)

/var/log/vcos_install.log(文件

我需要这个文件和目录被保存下来。 我确切地知道我想拷贝哪些目录和文件,哪些是我想排除的,但是我不知道什么语法是合理的。 我已经尝试了包含/排除模式的各种组合,我似乎无法弄清楚什么调用rsync想要表示我想要的行为。

我尝试添加以下到我的/ tmp / excludes的顶部,但没有骰子。

+ /var/log/vcos_install.log + /var/log/nova/***

我正在阅读试图正确地形成这个问题的手册页,并试验更多,似乎应该这样做,但它不。 Im_confused(rsync的)

+ /var + /var/log + /var/log/vcos_install.log + /var/log/nova/

如何获得pipe道中第一个命令的退出状态?

为什么“真”和“假”testing都是真的?

在c中为shell创build一个后台进程

获取pkill杀死的所有进程的PID?

linux shell支持列表数据结构吗?

那么,昨天晚上写下来做了更多的实验,我发现我离得很近,而且可能已经过了很长时间了。 最后的答案是尾随斜杠,并且一个存在感知的递归路径遍历包括目录,然后在包括所需的子目录和文件之后排除内容。 所以我建议的 – 几乎是正确的。

+ /var/ + /var/log/ + /var/log/vcos_install.log + /var/log/nova/ - /var/log/***

运行cmd时的结果:rsync -ahhsx –progress –delete –exclude – from'/ tmp / filters'// ramsync

sending incremental file list ./ root/.bash_history 1.77K 100% 0.00kB/s 0:00:00 (xfr#1,ir-chk=1456/8825) var/log/ var/log/vcos_install.log 82 100% 0.00kB/s 0:00:00 (xfr#2,to-chk=7/68722) var/log/nova/

还有很多其他文件与源文件不同,但只有明确包含的目录(/ var / log / nova)和我的安装程序日志被拷贝下来。 这是我正在寻找的混合排除/包含结果。 有时将问题以一致的格式放在一起可以帮助解决问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐