2011-08-12 15 views
0

私は次のタスクを行うスクリプトを書いています 私はこのようなディレクトリを持っています。ubuntuスクリプトをあるディレクトリから別のディレクトリにコピーする

/ホーム/ユーザー/ AC

/ホーム/ユーザー/ NF

/ホーム/ユーザー/ TU

/ホーム/ユーザー/ MS

。 。 。 N

すべてのディレクトリの中には、Dataともう1つのes Backupという2つのフォルダがあります。 /home/users/ac/Data /home/users/ac/Backup

これまでのスクリプトはこれです。 find。 -nameデータ型d -maxdepth 2 -mindepth 2

しかし、私が必要とするのは、すべてのデータが "/ home/user *の下のすべてのディレクトリ内のデータ"の中にあるということです。たとえば、次のようなものです。

CP /ホーム/ユーザー/ AC /データ/ * /ホーム/ユーザー/ AC /バックアップ

と私は何かが* /ホーム/ユーザー/の下にそのループごとにユーザーを自動化し、データディレクトリからにデータをコピーする必要がありますすべてのユーザーのバックアップディレクトリ。

ご迷惑をおかけして申し訳ありません。

答えて

1

これを行うにはrsyncを使用することをお勧めします。それは簡単にスクリプト化され、cronを使用してスクリプトをいつでも実行することができます。私はこのために以前はmirrordirというユーティリティを使用していましたが、それはもはやUbuntuリポジトリにはありません。

クイック検索このチュートリアルを上げ:http://www.abbeyworkshop.com/howto/unix/nix_rsync/index.html

+0

おかげであなたが持っている –

3

forループとcp -Rの簡単なアプリケーションはあなたの問題を解決しますあなたの意見

cd /home/users 
for i in ./*; do cp -Ra "$i"/Data/* "$i"/Backup/; done 
+2

すべては、これまでのすべてで使用可能ですPOSIXシェルは他の多くのシェルで変更なしで*動作するはずです。もちろん、他のすべてのPOSIXシェルでも同じエラーが発生します。それを修正するには、 '$ i'のすべての出現を引用すると' '$ i ''になり、安全であるように '*'ではなく' ./* 'を使用します。単純にASCIIの小文字2文字で、安全であることが常に良い習慣です)。それ以外の場合は良い答えです(+1)。また、おそらく '--preserve = all'または' -a'オプションを 'cp'で検討してください。これはバックアップスクリプトのようです。 – jw013

+0

@ jw013ありがとうございます。 – krzysz00

+0

私はこれを試していただきありがとうございます。 –

関連する問題