我想從Mac機器到linux機器同步rsync服務器的目錄,同時排除像.o文件和二進制可執行文件這樣的編譯文件。我如何排除二進制文件?如何在使用rsync時排除二進制文件
我現在用的那一刻:
rsync -av --compress --exclude="*.o" dir server:dir
我想從Mac機器到linux機器同步rsync服務器的目錄,同時排除像.o文件和二進制可執行文件這樣的編譯文件。我如何排除二進制文件?如何在使用rsync時排除二進制文件
我現在用的那一刻:
rsync -av --compress --exclude="*.o" dir server:dir
這是一個棘手的問題,因爲Unix系統沒有「二進制」和「文本」文件之間區別的硬性和快速定義。通過使用file
命令並在輸出中搜索text
(請參閱How to tell binary from text files in linux),您可以做得相當不錯,因此我將運行find
以生成file
認爲是文本的文件列表,並將其用作列表文件進行rsync:
find dir | xargs file | awk -F: '$2 ~ /text/ { print $1 }' | \
rsync --files-from=- -av --compress dir server:dir
這將需要一些調整,以確保路徑名是相對於源代碼目錄正確的,等等,但它應該接近你想要什麼。
從長遠來看,我想重做我的構建過程以將生成的文件放在dir/build
目錄中,但這可能對現在有所幫助:-)
您可以在目錄中添加.cvsignore
文件並使用選項-C
到rsync
。
但這只是模糊的你指定的。也許它適合你,也許它會承擔比你更多的事情。所以要小心並正確測試。
此外,您還可以在rsync
之前運行find
,掃描整個樹的文件符合您的是「二進制」的想法(也許編譯的可執行文件?),並把他們的名字在排除文件,你再與使用選項--exclude-from
。