コマンドツールで一連のコマンドを実行するには?

コマンドツールで一連のコマンドを実行するには?

以前に質問がありましたが(削除済み)、質問する内容を理解するのがなぜそれほど難しいのか、まだ理解できませんが、もう一度やり直してより明確に説明します。

したがって、サーバーAからサーバーBに複数のフォルダーをコピーしますが、各コピープロセスのコマンド(「rsync」)は、各フォルダーごとに1回のコマンドラインで実行する必要があります。

したがって、フォルダAをサーバXにコピーするためにrsyncコマンドを実行し、コピーが完了したら新しいrsyncコマンドを実行してフォルダBをサーバXにコピーします。

私が調査をしてみると、私の必要性について助けることができると思います。しかし、同時に複数のコマンドを書く方法を探しています。この方法は、前のコマンドがジョブを完了し、コピーが完了すると順番に実行されます。

;通常、複数のコマンドはセミコロンまたはアンパサンドで1行に分けられます&&。違いは、最初/前のコマンドがセミコロンのために失敗した場合でも続行されることです。コマンドでエラーが発生してアンパサンドを使用すると、コマンドは停止します。

それで、その過程でセミコロンを使ってコンピュータを一晩中実行させました。したがって、これらすべてのコマンドを1つずつ実行する必要があります...まず:複数のコマンドを正しく実行するにはどうすればよいですか? B、私のコマンドには何の問題がありますか?

sudo rsync -v -v -r -h -t —progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-01-02-233653/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap ; 
sudo rsync -v -v -r -h -t —progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-01-09-152837/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap ;
sudo rsync -v -v -r -h -t —progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-01-20-201229/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap ;
sudo rsync -v -v -r -h -t —progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-02-21-130931/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap ;
sudo rsync -v -v -r -h -t —progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-03-05-113353/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap ;
sudo rsync -v -v -r -h -t —progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-03-19-162703/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap ;
sudo rsync -v -v -r -h -t —progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-05-13-215016/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap ;
sudo rsync -v -v -r -h -t —progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-06-01-231321/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap

読みやすくするために、ここでは区切り文字を使用して区別しました。一般的に全体のライン

通常は;セミコロン文字で終わります。

ベストアンサー1

再現性を高めるために、キーワードなしで次の行を小さなスクリプトに配置することをお勧めしますsudo

#!/bin/bash

rsync -v -v -r -h -t --progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-01-02-233653/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap  
rsync -v -v -r -h -t --progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-01-09-152837/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap 
rsync -v -v -r -h -t --progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-01-20-201229/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap 
rsync -v -v -r -h -t --progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-02-21-130931/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap 
rsync -v -v -r -h -t --progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-03-05-113353/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap 
rsync -v -v -r -h -t --progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-03-19-162703/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap 
rsync -v -v -r -h -t --progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-05-13-215016/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap 
rsync -v -v -r -h -t --progress /Volumes/My\ Book/Backups.backupdb/MbpScs-van-iSCS/2014-06-01-231321/SSDaeffer /Volumes/BackupMyBook/ViaMacbookMove/DitIsDeMap

この一連のコマンドを実行するには、次のように入力します。

chmod +x myscript.sh
sudo ./myscript.sh

これにより、sudo長いコマンド中にタイムアウトが発生しなくなります。スクリプトファイルにはセミコロンは必要ありません。デフォルトでは、各行は失敗する可能性があり、次の行が実行されます(これを変更するには使用してくださいset -o errexit)。

私もあなたの命令で怪しいものを見つけました。--progress一般オプションを使用しない場合ハイフンしかし、似たような形のキャラクターがいくつかあります。これは現在見ているエラーの別の原因かもしれません。

おすすめ記事