3

zipしばらく前に、ユーザーが指定したいくつかの異なるディレクトリを圧縮するために使用するスクリプトを作成しました。スクリプトがこれを行った方法は、ディレクトリを読み取り、config.txtそれぞれを個別に圧縮することです。私の使用では、これらのディレクトリはすべて同じ親にあります。たとえば、ディレクトリには次のディレクトリがあります/Users/username/

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
4

3 に答える 3

11

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

これにより、デスクトップ、ドキュメント、および画像の下のすべてのファイルが、という名前のファイルの下に圧縮されます。backup.zip

ある種のトリックは、config.txtファイルからリスト(おそらく垂直リストまたは配列)を読み取り、それを1つの長い文字列にすることです。

于 2013-03-25T17:04:43.777 に答える
1

コメントと回答を読んでください、彼らはあなたの質問に良い方法で答えました!

  • 一定のものをループから外す

OUTPUT = "/ Users / michaelgarrison /" $ BKUPDATE "/ Backup _" $(date + "%Y-%m-%d")"。zip"DESTINATION = "/ Users / michaelgarrison /" <------ ---これが必要ですか?私はあなたがしないと思います

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

これを複数回実行したい場合は、rsyncを使用できます

于 2013-03-25T17:26:23.173 に答える
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
于 2013-03-25T17:00:51.570 に答える