84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
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 -type f -print | grep -v dir*.md5 | xargs md5 | awk '{print $NF}' | sort > temp.dir1.md5 find -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 " and is different" else echo " and 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 -type f -print | grep -v dir*.md5 | xargs md5 | awk '{print $NF}' | sort > temp.dir1.md5 find -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 " and is different" else echo " and 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 計畫任務+1
rsync + inotify
感覺你應該為了自動備份吧,如果是平常自己的程式碼檔案之類的,我通常都是在關鍵的時候手動備份,也簡單,就直接執行一下cp -r,自動備份有個問題就是不知道什麼時候該備份,例如10分鐘給你備份了,但實際上你想回到1小時之前,怎麼辦,所以我還是喜歡手動備份,畢竟也簡單。
另外如果你只是要比較兩個資料夾是否完全一致的話,我寫了一個工具
crontab+rsync
兩個資料夾都在本地時,如果一個為主,一個為輔,那麼應該是可以用inotify + rsync
另外,其實可以你考慮bit torrent sync或syncthing,當然這主要是用在不在同一個機器上時使用的
寫個同步腳本吧,放到crontab裡
如果是文件的話可以用硬連結
其實我只想問,這個需求是幹嘛的...
之前為了Dropbox,用了junction,只是為了連結
rsync槓的
rsync +1
計畫任務+1