「ファイルは1個づつコピーしてください」を愚直にやる

シス管

なぜ、こんな面倒なことをするか。
障害対応でバックアップしてあったデータをリストアすることになったのだけども、ディレクトリごとコピーするのではなく、本当に必要なファイルだけを持っていこうと言うことになった。

コピー元のファイル一覧を作る。

$ cd コピー元のPath
$ find . -type f > filelist.txt

filelist.txtからリストアしないファイルを削除する。

ファイル一覧から実際にファイルをコピーするShellを作る。

$ cat filelist.txt | awk ‘BEGIN{s=”$src/”;d=”$dst/”}{print “cp -p ” s $1, d $1}’ > file_copy.sh

file_copy.sh
cp -p $src/myconfig $dst/myconfig
-bash-4.2$ for f in `find uploads/ -type f` ;do echo “cp –parents” “${f}” “n-yota.com/public_html/wp-content/”; done | head
cp –parents uploads/2010/08/290833_281024965271099_1646630593_o-100×100.jpg n-yota.com/public_html/wp-content/
cp –parents uploads/2010/08/290833_281024965271099_1646630593_o-150×150.jpg n-yota.com/public_html/wp-content/
cp –parents uploads/2010/08/290833_281024965271099_1646630593_o-300×225.jpg n-yota.com/public_html/wp-content/

ファイルの先頭に
#/bin/bash
src=”コピー元のPath”
dst=”コピー先のPath”
を追記。

cpコマンドに-pオプションをつけているのはコピー先にディレクトリがないことがあるので、ファイルを親ディレクトリ付きでコピーしてます。

実行した環境はエックスサーバーです。



コメント

タイトルとURLをコピーしました