Linux 如何保持两个文件夹内容一致 ?
比如
~/dock1 ~/dock2
要保证完全一致 ...
软连接是不行的好像
小伙看你根骨奇佳,潜力无限,来学PHP伐。
rsync + inotify
感觉你应该为了自动备份吧,如果是平时自己的代码文件之类的,我一般都是在关键的时候手动备份,也简单,就直接执行一下cp -r,自动备份有个问题就是不知道什么时候应该备份,比如10分钟给你备份了,但是实际上你想回到1小时之前,怎么办,所以我还是喜欢手动备份,毕竟也简单。 另外如果你只是要比较两个文件夹是否完全一致的话,我写了一个工具
sh#!/usr/bin/env bash # 比较两个文件夹是否一致 # 计算每个文件文件的md5值,将所有的md5值写入一个文件中,最后再用md5比较这个文件是否一样 # mac系统下计算md5的值命令是md5,如果是linux,请换成md5sum # 用法:sh is_same.sh dir1 dir2 if [[ $# != 2 ]]; then echo "usage: sh is_same.sh <dir1> <dir2>" exit 1 fi # find查找文件,md5计算md5值,awk取出md5值,sort保证次序是一致的,将结果输出到文件中 find $1 -type f -print | grep -v dir*.md5 | xargs md5 | awk '{print $NF}' | sort > temp.dir1.md5 find $2 -type f -print | grep -v dir*.md5 | xargs md5 | awk '{print $NF}' | sort > temp.dir2.md5 # 比较两个文件是否相同,如果相同说明两个目录是一致的 md5sum1=$(md5 temp.dir1.md5 | awk '{print $NF}') md5sum2=$(md5 temp.dir2.md5 | awk '{print $NF}') if [[ $md5sum1 != $md5sum2 ]]; then echo "$1 and $2 is different" else echo "$1 and $2 is same" fi # 删除临时文件 rm temp.dir1.md5 rm temp.dir2.md5
sh
#!/usr/bin/env bash # 比较两个文件夹是否一致 # 计算每个文件文件的md5值,将所有的md5值写入一个文件中,最后再用md5比较这个文件是否一样 # mac系统下计算md5的值命令是md5,如果是linux,请换成md5sum # 用法:sh is_same.sh dir1 dir2 if [[ $# != 2 ]]; then echo "usage: sh is_same.sh <dir1> <dir2>" exit 1 fi # find查找文件,md5计算md5值,awk取出md5值,sort保证次序是一致的,将结果输出到文件中 find $1 -type f -print | grep -v dir*.md5 | xargs md5 | awk '{print $NF}' | sort > temp.dir1.md5 find $2 -type f -print | grep -v dir*.md5 | xargs md5 | awk '{print $NF}' | sort > temp.dir2.md5 # 比较两个文件是否相同,如果相同说明两个目录是一致的 md5sum1=$(md5 temp.dir1.md5 | awk '{print $NF}') md5sum2=$(md5 temp.dir2.md5 | awk '{print $NF}') if [[ $md5sum1 != $md5sum2 ]]; then echo "$1 and $2 is different" else echo "$1 and $2 is same" fi # 删除临时文件 rm temp.dir1.md5 rm temp.dir2.md5
crontab+rsync
两个文件夹都在本地时,如果一个为主,一个为辅,那么应该是可以用inotify + rsync
另外,其实可以你考虑bit torrent sync或者syncthing,当然这个主要是用在不在同一个台机器上时使用的
写个同步脚本吧,放到crontab里
如果是文件的话可以用硬链接
其实我只想问,这个需求是干嘛的...
之前为了Dropbox,用了junction,只是为了链接
rsync杠杠的
rsync +1 cron +1
rsync + inotify
感觉你应该为了自动备份吧,如果是平时自己的代码文件之类的,我一般都是在关键的时候手动备份,也简单,就直接执行一下cp -r,自动备份有个问题就是不知道什么时候应该备份,比如10分钟给你备份了,但是实际上你想回到1小时之前,怎么办,所以我还是喜欢手动备份,毕竟也简单。
另外如果你只是要比较两个文件夹是否完全一致的话,我写了一个工具
crontab+rsync
两个文件夹都在本地时,如果一个为主,一个为辅,那么应该是可以用inotify + rsync
另外,其实可以你考虑bit torrent sync或者syncthing,当然这个主要是用在不在同一个台机器上时使用的
写个同步脚本吧,放到crontab里
如果是文件的话可以用硬链接
其实我只想问,这个需求是干嘛的...
之前为了Dropbox,用了junction,只是为了链接
rsync杠杠的
rsync +1
cron +1