簡體   English   中英

BASH:將所有文件和目錄復制到同一父目錄中的另一個目錄中

[英]BASH: Copy all files and directories into another directory in the same parent directory

我試圖做一個簡單的腳本復制了所有我的$HOME到另一個文件夾$HOME稱為Backup/ 這包括所有隱藏的文件和文件夾,並且不包括Backup/本身。 我現在要復制的部分如下:

shopt -s dotglob

for file in $HOME/*
do
    cp -r $file $HOME/Backup/
done

Bash告訴我它無法將Backup/復制到其自身中。 但是,當我檢查$HOME/Backup/的內容時,我看到$HOME/Backup/Backup/存在。

Backup/本身的副本是沒有用的。 我如何獲得bash來復制除Backup/以外的所有文件夾。 我嘗試使用extglob並使用cp -r $HOME/!(Backup)/但是它沒有復制我需要的隱藏文件。

嘗試rsync。 您可以排除文件/目錄。

這是一個很好的參考

http://www.maclife.com/article/columns/terminal_101_using_rsync_locally 

雨果

這樣的腳本是好的,但是您可以嘗試執行以下操作:

cp -r *備份/; cp -r。*備份/;

備份使用的另一個工具是tar。 這樣可以壓縮備份以節省磁盤空間。

另請注意,*並不覆蓋。 隱藏文件。

我同意使用rsync是更好的解決方案,但是有一種簡單的方法可以跳過bash的目錄:

for file in "$HOME/"*
do
    [[ $file = $HOME/Backup ]] && continue
    cp -r "$file" "$HOME/Backup/"
done

這不會直接回答您的問題(其他答案已經做到了),但是當您想使用cp進行備份時,請嘗試cp -ua 這將遞歸目錄,復制而不是跟隨鏈接,保留權限,並且僅在文件比目標副本新時復制文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM