rsync 只同步特定格式/副檔名檔案的方法

想要用 rsync 同步特定格式的檔案,最近比較沒空動腦認真想,只好 Google 找現成的答案,在 stackoverflow 和 Ubuntu forums 看到的方法,很實用:

http://ubuntuforums.org/showthread.php?t=763833&p=8546521#post8546521

https://stackoverflow.com/a/11111793

[bash]
rsync -a –include ‘*/’ –include ‘*.mp3’ –exclude ‘*’ source/ target/
[/bash]

看 stackoverflow 那邊討論是寫 rsync 3.0.7 以前的版本的用法要這樣寫,那個 exclude 和 include 的順序有影響 :

[bash]
rsync -a –include ‘*/’ –exclude ‘*’ –include ‘*.mp3’ source/ target/
[/bash]

不過我自己是沒特別測試過就是了,隨手翻了一下 change log 好像沒看到相關的說明:

所以不確定是不是真的從 rsync v3.0.7 改了用法還是怎麼樣,等哪天有空再來翻翻看 …

用 rsync 建 public mirror參數筆記

在建專案 mirror 的時候比較長用到的參數,筆記一下…

除了資料的同步以外,很重要的一點是避免使用者在存取的時候剛好在同步資料就爛掉了,一般會用 --archive 加上 --delete-after/--delay-updates,在要資料同步拿完後才一次動作,另外透過 --no-OPTION 拿掉不要處理的部份,例如我會把 owner 跟 group 拿掉,方便 local 要改一些因地制宜的依些設定,再用 --exclude 排除掉 local 的東西,如 .htaccess。

–delete-after receiver deletes after transfer, not during
–delay-updates put all updated files into place at transfer’s end
-S, –sparse handle sparse files efficiently
–safe-links ignore symlinks that point outside the source tree

-v, –verbose increase verbosity
-a, –archive archive mode; equals -rlptgoD (no -H,-A,-X)
–no-OPTION turn off an implied OPTION (e.g. –no-D)

-r, –recursive recurse into directories
-l, –links copy symlinks as symlinks
-p, –perms preserve permissions
-t, –times preserve modification times
-g, –group preserve group
-o, –owner preserve owner (super-user only)
-D same as –devices –specials

-A, –acls preserve ACLs (implies –perms)
-X, –xattrs preserve extended attributes
-H, –hard-links preserve hard links

–exclude=PATTERN exclude files matching PATTERN
–exclude-from=FILE read exclude patterns from FILE