實現一個檔案夾同步的shell指令碼

來源:互聯網
上載者:User

實現一個檔案夾同步的shell指令碼
演算法:

 

1.先find /pathname -print >filea #擷取兩個檔案夾裡所有檔案的全名。<br />2.比較檔案,先刪去要同步的檔案夾裡多餘的檔案。接著重新獲得需要同步的檔案夾裡所有檔案的全名。<br />3.比較檔案,把源檔案夾裡增加的檔案CP到要同步的檔案夾中。<br />

 

這個指令碼是同步/share目錄裡的所有檔案,需要備份到/mnt/d/share

 

#!/bin/bash</p><p>mount /dev/hda6 /mnt/d 2>/dev/null ; unalias rm cp<br />rm /share/c/app/*o /share/c/tmp/*o /share/c/app/*core /share/c/tmp/*core /share/c/app/a.out /share/c/tmp/a.out<br />find /share -print >/tmp/.share_ #把/share的所有檔案的全名儲存到/tmp/.share_</p><p>find /mnt/d/share -print |sed 's///mnt//d//g' >/tmp/.d_<br />chmod 700 /tmp/.share_ /tmp/.d_<br />count=0<br />for i in $(comm -23 /tmp/.d_ /tmp/.share_) ; do #比較兩個檔案裡/tmp.d_ 與/tmp./share_的不同。</p><p>echo "/mnt/d$i"<br />rm "/mnt/d$i" ; count=$((count+1)) #刪除/mnt/d/share/*裡的多餘的檔案和計數。</p><p>done #for command ;do command ; done的迴圈到此結束。</p><p>echo "del $count file at /mnt/d/share/"<br />find /mnt/d/share -print |sed 's///mnt//d//g' >/tmp/.d_ ; count=0 #重新獲得檔案的全名。初始化計數器。</p><p>for i in $(comm -23 /tmp/.share_ /tmp/.d_) ; do<br />echo $i<br />cp $i "/mnt/d$i" ; count=$((count+1)) #備份/share裡新增加的檔案到/mnt/d/share,同時計數。</p><p>done<br />echo "already copied $count file from /share to /mnt/d/share " ;sync<br />umount /mnt/d 2>/dev/null<br />echo done</p><p>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.