我需要將所有.class文件從服務器複製到本地,並保留所有目錄。例如server:/usr/some/unknown/number/of/sub/folders/me.class
將是/usr/project/backup/some/unknown/number/of/sub/folders/me.class
問題是,還有許多其他無用的文件,例如.svn-base文件,我不想要。我如何過濾它們,所以我只有scp
.class文件?如何在使用scp遞歸複製dir時過濾文件?
回答
我可能會建議使用像rsync
這是由於其include
和exclude
標誌,例如: -
rsync -rav -e ssh --include '*/' --include='*.class' --exclude='*' \
server:/usr/some/unknown/number/of/sub/folders/ \
/usr/project/backup/some/unknown/number/of/sub/folders/
其他一些有用的標誌:
-r
遞歸-a
(主要是所有文件)-v
詳細輸出-e
指定SSH而不是默認的(這應該是SSH,實際上)
無論如何,要忽略其中沒有* class文件的子文件夾? (也就是說我不想要一堆空的子彈) – 2013-10-25 15:09:23
源文件夾複製到
somedir
:CP -r
srcdir
somedir
刪除所有不必要的文件:
找到somedir -name '.svn文件' -exec室射頻{} \ +
從
somedir
啓動scp
在scp中沒有功能來過濾文件。對於這樣的「先進」的東西,我建議使用rsync:
rsync -av --exclude '*.svn' [email protected]:/my/dir .
(這條線的副本從遙遠的文件夾rsync將當前)rsync的隧道在默認情況下,一個ssh連接自動
最新版本。
既然你可以scp
你應該確定以ssh
,
無論是腳本以下或登錄並執行...
# After reaching the server of interest
cd /usr/some/unknown/number/of/sub/folders
tar cfj pack.tar.bz2 $(find . -type f -name *.class)
回報回(註銷)到本地服務器和scp
,
# from the local machine
cd /usr/project/backup/some/unknown/number/of/sub/folders
scp [email protected]:/usr/some/unknown/number/of/sub/folders/pack.tar.bz2 .
tar xfj pack.tar.bz2
如果您發現是您的焦油變化太久,
find . -type f -name *.class | xargs tar cfj pack.tar.bz2
最後,因爲您把它/usr/project/backup/
,
何苦提取?只需保留tar.bz2
,可能有日期+時間戳。
要排除的dotfiles在基本目錄:
scp -r [!.]* server:/path/to/something
使用基於SSH密鑰認證功能,下面的腳本會工作。
for x in `ssh [email protected] 'find /usr/some -type f -name *.class'`; do y=$(echo $x|sed 's/.[^/]*$//'|sed "s/^\/usr//"); mkdir -p /usr/project/backup$y; scp $(echo '[email protected]:'$x) /usr/project/backup$y/; done
下面的文件命令。
SCP`找到。 -maxdepth 1 -name「* .log」\! -name「hs_err_pid2801.log」-type f` root @ IP:/ tmp/test/
- IP將是目標服務器的IP地址。
- -name 「* .LOG」 包含文件。
- \! -name「hs_err_pid2801.log」用於排除文件。
- 。是當前工作目錄。
- -type f用於文件類型。
以下命令目錄。
SCP -r`找到。 -maxdepth 1 -name「lo *」\! -name 「localhost」 的型D'根@ IP:/ tmp/test目錄/
您可以自定義上面的命令按您的要求。
- 1. 通過scp複製文件
- 2. Scp命令無需遞歸複製特定文件夾
- 3. 如何遞歸複製目錄並在Perl中過濾文件名?
- 4. CMake使用copy_if_different遞歸複製文件
- 5. C - 遞歸複製文件
- 6. 遞歸複製文件
- 7. 如何使用部分複製的文件恢復scp?
- 8. NSIS - 如何在排除文件的同時遞歸複製?
- 9. 如何使用qmake遞歸複製文件
- 10. 如何遞歸濾波點文件出在bash使用find?
- 11. 複製文件遞歸在Python
- 12. 在node.js中遞歸複製文件夾
- 13. 如何在使用遞歸製作時避免這些重複?
- 14. 混帳difftool --dir-DIFF:如何複製回修改過的文件
- 15. Ant:如何在使用「過濾」複製xml文件時xml-escape屬性值
- 16. 使用scp在文件名中使用空格複製文件文件
- 17. 複製遞歸文件和文件夾,但跳過父項
- 18. 在Python中跳過一些目錄遞歸複製文件?
- 19. dir()/ find()過濾掉隱藏文件
- 20. Java遞歸文件複製優化
- 21. 使用gcloud compute scp在實例之間複製文件
- 22. 如何用scp將文件複製到ec2 instace?
- 23. 使用g ++遞歸製作.O文件?
- 24. 如何遞歸不使用/ S運行DIR命令切換
- 25. 如何在使用遞歸時創建2個csv文件
- 26. net :: scp複製/覆蓋文件夾
- 27. SCP/Bash回顯複製的文件?
- 28. msysgit的scp無法複製大文件
- 29. 使用MSBuild目標從NuGet包中遞歸複製文件
我想提到的rsync的選項。你沒有提到這是一次性操作,還是反覆自動化。對於一次性操作,明智地使用find,grep -v,xargs和臨時文件應該簡化這個工作。 – user47559 2009-08-04 16:40:53