2013-03-25 134 views
2

我製作了一個腳本,它使用zip來壓縮幾個不同的用戶指定目錄。腳本執行此操作的方式是從config.txt讀取目錄並分別壓縮每個目錄。恰巧,爲了我的使用,所有這些目錄都在同一個父目錄中。舉例來說,我有以下目錄中我/Users/username/目錄:Bash腳本 - 在一個存檔中壓縮多個目錄

Desktop 
Documents 
Pictures 

有沒有辦法將這些3在同一歸檔結合?

對於一個參考,這裏是我當前的腳本:

BKUPDATE="/Users/michaelgarrison/Backup/BKUP_"$(date +%Y)-$(date +%m)-$(date +%d) 

# Create the Backup directory if it does not exist 
mkdir -p $BKUPDATE 

# File where directories are specified 
CONFIG="config.txt" 

while read SOURCE 
do 
    DESTINATION="/Users/michaelgarrison/" 
    OUTPUT=$BKUPDATE"/Backup_"$SOURCE"_"$(date +%Y)-$(date +%m)-$(date +%d)".zip" 
    (cd /Users/michaelgarrison/; zip -r $OUTPUT $SOURCE) 
done < $CONFIG 
+3

無關提示:您只需要一個電話到'date':'日期+」 %Y-%m-%d「' – chepner 2013-03-25 16:54:26

+0

只需調用'zip -r $ OUTPUT桌面文檔圖片」? – vonbrand 2013-03-25 16:58:04

+0

我沒有意識到我可以在命令中添加更多的目錄。我和@Hayden一起創建了一個數組來顯示每個目錄。 – 2013-03-25 17:50:42

回答

10

zip -r backup Desktop/* Documents/* Pictures/*

這將壓縮指定的文件下的所有在桌面,文件和圖片文件backup.zip

排序的訣竅將被讀取從config.txt文件列出列表,大概是一個垂直列表或數組,並使其成爲一個長字符串。

+0

我不知道你可以添加目錄到這樣的命令。我所做的是將每個值存儲在數組中,然後使用'(cd $ DPATH; zip -r $ OUTPUT $ {DIR [*]})'來壓縮目錄。 – 2013-03-25 18:06:18

0

我想我只是回答我自己的問題,但不是刪除,我會離開這裏以供將來參考。我所做的是將輸出更改爲每個傳遞相同的zip文件。

我沒有什麼變化:

while read SOURCE 
do 
    DESTINATION="/Users/michaelgarrison/" 
    OUTPUT=$BKUPDATE"/Backup_"$SOURCE"_"$(date +%Y)-$(date +%m)-$(date +%d)".zip" 
    (cd /Users/michaelgarrison/; zip -r $OUTPUT $SOURCE) 
done < $CONFIG 

到:

OUTPUT=$BKUPDATE"/Backup_"$(date +%Y)-$(date +%m)-$(date +%d)".zip" 
while read SOURCE 
do 
    DESTINATION="/Users/michaelgarrison/" 
    (cd /Users/michaelgarrison/; zip -r $OUTPUT $SOURCE) 
done < $CONFIG 
+0

我知道這在技術上並不是一個「好」的方法,但它確實有效。 – 2013-03-25 17:46:16

1

請閱讀評論和答案,他們以一種很好的方式回答你的問題!

  • 放恆定東西圈外

OUTPUT = 「/用戶/ michaelgarrison /」 $ BKUPDATE 「/備份_」 $(日期 +「%Y-%間 - %d 「)」。zip「 DESTINATION =」/ Users/michaelgarrison /「< ---------你需要這個嗎?我想你不

while read SOURCE 
do 
    zip -r $OUTPUT $SOURCE 
done < $CONFIG 

如果你想要做一次這個更多,你可能可以使用rsync

+0

我的確讀過了答案和評論,並且在我評論或接受任何內容之前,我一直在研究腳本並使所有內容都能正常工作。 – 2013-03-25 17:45:40

+0

說到以「好」的方式做事,你的答案基本上和我自己的答案一樣,除了你把'DESTINATION'移到了循環外。我也沒有接受我的答案,因爲我想看看其他人是否對我應該如何做這件事有想法。 – 2013-03-25 17:58:34

+0

我改變了'DESTINATION',目錄改變,因爲它每次都和'date'一樣,我以爲你沒有在你的問題下面看到評論(是的,我的答案可以刪除,如果你把你的代碼;)) – 2013-03-25 18:03:53

相關問題