Rsync
rsync 和包含/排除。它能有多難?
我正在嘗試將目錄/文件結構從一個目錄遞歸複製到另一個目錄,只保留 html 文件。應該是一個簡單的包含/排除案例,不是嗎?
我只想先列印出文件。當我做對了,我會複製它們。
rsync -a --list-only -v SOURCEDIR --exclude='.*' --include='**/*.html'
給我所有的文件。
rsync -a --list-only -v SOURCEDIR --include='**/*.html' --exclude='*'
和
rsync -a --list-only -v SOURCEDIR --include='*.html' --exclude='*' rsync -a --list-only -v SOURCEDIR --include=*.html --exclude=*
不給我文件。
rsync -a --list-only -v SOURCEDIR --include='*.html' --exclude='*.*'
看起來它給了我整個目錄結構,只有 html 文件。但我不想要空目錄。
幫助!
在 Mac OS 10.6 上
您是否考慮過使用 find 來完成您的辛勤工作?
類似的東西
find ./ -name "*.html" -exec rsync -R {} /target/base/directory/ \;
將重新創建 ./ 的目錄樹,在其中找到 html 文件,並在 /target/base/directory 下建構相同的目錄樹
Rsync 可能會混淆像這樣的選擇性副本。我使用以下內容來完成您要求的任務:
rsync -avP \ --filter='+ */' \ --filter='+ **/*.html' \ --filter='- *' \ --prune-empty-dirs \ --delete \ /source/ \ /dest/
基本上你需要在搜尋中包含所有目錄,然後將所有
*.html
文件添加到列表中,排除所有其他文件。該
--prune-empty-dirs
選項使用起來很方便,因為它排除了任何沒有*.html
文件的目錄。