inotifywait + rsync 同步文件夹

inotifywait + rsync 同步文件夹

需求:

我有一个文件夹,里面有一些代码和笔记,我想同步备份一个,免得又不小心弄丢了。

代码:

将Home目录下的code document myconfig go bin目录同步备份到 /store/share

#!/bin/bash

# 避免注销后登入,又运行一次。
# 后来我发现多余的,gnome注销后,自启动的程序全部退出了。可以注销后,进入字符界面,pgrep看看就知道了。
# pgrep inotifywait
# if [ $? == '0' ] ; then
# 	exit
# fi   

cd $HOME
srcs=("code" "document" "myconfig" "go" "bin")
dst=/store/share
inotifywait -m -r \
	--timefmt '%y-%m-%d %H:%M:%S' \
	-e delete,create,attrib,close_write,move \
	--exclude "(.*\.swx|.*\.swp|.*~|.*\.goutputstream-*|4913|__.*|/\.|liteide.*|Sourcetrai.*)" \
	--format "%T %:e %f" ${srcs[*]} | while read line
do
	for x in ${srcs[*]}
	do
		rsync -aHXA --delete $x $dst 
	done
done


# inotifywait:
# -m 持续监视
# -r 包含子目录
# --exclude "(.*\.swx|.*\.swp|.*~|.*\.goutputstream-*|4913|__.*|/\.)" \
# 这里要说明一下的是:
	# /\. 对应于排除隐藏文件,即.开头的文件。
	# 4913是vim不知道为什么要创建又立马删除的文件,假如有4913,它就会创建5036


# rsync:
# -a, --archive
# 该选项等价于"-rlptgoD"选项的组合。它表示使用归档模式并保留几乎所有属性(明显遗漏了"-H"选项)。
# 上面的等价选项的唯一例外是指定了"--files-from"选项,它使得"-r"选项被强 制忽略。
# 注意,"-a"选项不保留硬链接属性。

# -H, --hard-links   preserve hard links 保持硬连接
           
# -X, --xattrs
# 使目标文件的扩展属性和源文件的扩展属性保持一致。

# -A, --acls
# 使目标文件的ACL属性和源文件的ACL属性一致。

gnome自启动:

  • 将上述代码保存到~/bin/wait-rsync.sh
  • 运行gnome-tweak,自启动那里添加终端。
  • 修改.config/autostart/org.gnome.Terminal.desktop中的一行:Exec=/home/xxxx/bin/wait-rsync.sh

bug fix:

  • bug:不可以再添加终端。既然这样,干脆新建一个文件gnome-start.sh
  • 将上面desktop文件中的wait-rsync.sh修改为gnome-start.sh
  • 然后,将wait-rsync.sh等需要自启动的,都依次加到gnome-start.sh
#!/bin/bash
wait-rsync.sh&
tilda -g ~/.config/tilda/config_F7 >> /dev/null&
tilda -g ~/.config/tilda/config_F8 >> /dev/null&
tilda -g ~/.config/tilda/config_F9 >> /dev/null&
tilda -g ~/.config/tilda/config_F10 >> /dev/null&
tilda -g ~/.config/tilda/config_F3 >> /dev/null&
tilda -g ~/.config/tilda/config_F4 >> /dev/null&

tilda的配置将在下一篇说明。

posted @ 2021-12-05 15:37  qydw007  阅读(99)  评论(0编辑  收藏  举报