「cp」コマンドが正しく実行されていることを確認してください。

「cp」コマンドが正しく実行されていることを確認してください。

このトピックで説明されているコマンドを使用してファイルのバックアップコピーを作成しましたcp(Linuxでファイルをコピーする場合は、ファイルがターゲットに存在する場合はコピーしないでください)。https://superuser.com/a/1377730/1008457 コマンドは次のとおりです。

while true; do echo n; done | cp -Ri /origin /destination 2>/dev/null

良い結果。しかし、コピープロセスにエラー(ハードドライブへの読み書きエラー)がないかどうかをどうやって確認できますか?シェル変数$?aが十分であることを考慮すると、コピーして0返すのに十分ですか?

答え1

cp0エラーが発生しない場合は終了ステータスが返され、そうでない場合は1。はい。スクリプトでこの値をテストして、エラーが発生していないことを確認できます。

現在の標準エラーに対してDiscardコマンドを使用することもできます2>/dev/null。このオプションを省略すると、すべてのエラーが端末に出力されます。これはstdoutとのデフォルトですstderr。または、stderr拡張子を使用してログファイルとしてキャプチャすることもできます2>path/to/log/file


しかも(クサロナンダがそうだったようにコメントしました。)を使用してコマンドを簡素化できます-n--no-clobberこれはターゲットを上書きしないことを意味します。

cp -Rn origin destination 2>log_file

後でスクリプトを入力すると、$?成功をテストできます。

または、標準構文を使用できますif

if cp -Rn origin destination 2>log_file; then
    echo "OK"
else
    echo "Failed"
fi

または略語:

cp -Rn origin destination 2>log_file && echo "OK" || echo "Failed"

また、-a(代わりに)逆参照リンクを実装しているので、バックアップ-Rに役立ちます(参照)。-Rdman cp

関連情報