0

さて、基本的に私がしていることは、/ servers /フォルダー内のすべてのディレクトリを取得し、それらを/ media /backupdrive/にマウントされたセカンダリハードドライブに移動することです。このスクリプトは1日に1回実行されるため、日付の名前でディレクトリが作成され、そこにフォルダを直接コピーする必要があります(この方法で実行する必要があるのは、クライアントのメインハードのディスク容量が限られているためです。ドライブと彼の世界はそれぞれ6〜7GB以上です)。とにかく、フォルダを/ media / backupdrive / currentdateにコピーしてもらうことはできますが、圧縮しようとすると、空のディレクトリなどを圧縮できないと表示されます。

コードは次のとおりです。

#!bin/bash
folderName=$(date +"%m-%d-%y")
mkdir "/media/backupdrive/$folderName"

for i in servers/*; do
    cp -rf $i /media/backupdrive/$folderName/
    cd /media/backupdrive/$folderName/
    tar -C ${i:8} -czvf "${i:8}.tar.gz"
    cd /root/multicraft/
done

画像は申し訳ありませんが、仮想マシン上にあり、コピーして貼り付けることができなかったため、再入力する必要がありました。

4

2 に答える 2

3

あなたの tar コマンドには入力 (最後の "." など) が欠けているように見えます。そのため、"tar: Cowardly refusing to create a empty archive" と表示されます。

あなたのスクリプトは、次の tar コマンドで動作するようです:

tar -C ${i#servers/} -czvf "${i#servers/}.tar.gz" .
于 2013-03-19T21:19:14.000 に答える
1

少し違うアプローチを試してみます。tarそれ自体では一時ファイルを使用しないため、ソースを宛先に直接送信し、2 番目のステップでtar圧縮できます。gzip

#!bin/bash

dst="/media/backupdrive/$(date +"%m-%d-%y")"

for d in servers/*; do
  tarfile="$dst/${d#servers/}.tar"
  tar -C "$d" -cvf "$tarfile" .
  gzip -9 "$tarfile"
done
于 2013-03-19T22:33:54.137 に答える