名前にwW4を含むファイルのみをインポートするようにrsyncに指示する方法

名前にwW4を含むファイルのみをインポートするようにrsyncに指示する方法

私はこの仕事においてはただの素人だけだと言いたいです。以下のWebページから課題ファイルを入手してください。良い結果。

rsync -av --progress -e 'ssh -i ~/.ssh/godaddy5_rsa' $user@$server:${RemotePath}/ "${Answers}"

すべてのファイル名は次のとおりです。

1112223334_18BEwW4data

最初の生徒番号(1112223334)、次の_class(_18BE)、次の週番号(wW4 =冬学期4週目)、およびデータ

パスは次のとおりです。

RemotePath="public_html/18BE/php/uploads"
Answers="/home/pedro/winter2019-20/18BE/fastmarker"

もちろん、wWXは期間の経過とともに変化します。メイン番号を取得し、rsyncスクリプトに挿入するための小さなbashスクリプトを作成しました。

echo "First, enter the week number you want to get."
read week
echo "You are fetching winter week $week"
echo "If this is correct, enter y, if not enter n to abort."
read answer
if [ $answer = "n" ]; then
echo "You entered the wrong week number, aborting script, byebye. Start again!"
 exit
fi
echo "You entered the correct week number, I'll carry on!"

これで、$weekという名前のファイルのみをインポートしたいと思います。次の週はwW4になります。

私はrsyncのマニュアルページを読み、--includeと--excludeのさまざまな組み合わせを試しました。

私が得るものは何もないか、すべてのファイルです。つまり、ファイル名にwW1、wW2、およびwW3も含まれるファイルです。

名前に$weekを含むファイルのみをインポートするようにrsyncにどのように指示する必要がありますか(次はwW4ですか?)

編集:提案していただきありがとうございます。私はこれを試しました:

rsync -av --progress -e 'ssh -i ~/.ssh/godaddy5_rsa' $user@$server:${RemotePath}/*_18BEwW4data "${Answers}"

残念ながら、私は何も得られませんでした。学生番号はすべて異なるため、ワイルドカードが必要です。

*.wW4で終わるようにいくつかのファイルの名前を変更した後、次のことを試しました。

rsync -av --progress -e 'ssh -i ~/.ssh/godaddy5_rsa' $user@$server:${RemotePath}*.wW4 "${Answers}"

Bashで次のエラーが発生します。

第三に、リモートサーバー上のファイルをこのコンピュータにインポートします。増分ファイルのリスト rsync を受け取る: link_stat "/home/myusername/public_html/18BE/php/uploads*.wW4" 失敗: 対応するファイルまたはディレクトリなし (2)

8 バイトの送信 123 バイトの受信 15.41 バイト/秒 合計サイズは 0 スピードアップは 0.00 rsync エラー: main.c(1668) から一部のファイル/プロパティ (前のエラーを参照) (コード 23) が送信されませんでした。 [受信者 =3.1.2]Pedro @pedro-school2:~$

すみません!私のせい! $ RemotePathでミスをしましたが、これで動作します!

感謝して面倒なのでごめんなさい!

ベストアンサー1

rsync -av --progress -e 'ssh -i ~/.ssh/godaddy5_rsa' $user@$server:${RemotePath}/1112223334_18BEwW4* "${Answers}"

あまり深く考えないでください。インクルード/除外は不要で、ワイルドカードを使用するだけです。

すべてのタスクを含むディレクトリがあり、rsyncは次のような最新のタスクをインポートするので、実際に1週間運動する必要さえありません。

rsync -av --progress -e 'ssh -i ~/.ssh/godaddy5_rsa' $user@$server:${RemotePath}/1112223334_18BEwW* "${Answers}"

date +%Uはその年の週を返すので、それを使用してコースの週を自動的に生成できます。これは線形であり、毎週1ずつ増加すると仮定する。あるいは、インデックスがコースの週番号を指し、インデックスが年の週番号である配列を作成することもできます。または、線形関係の場合は、年 - 週数を加算または減算することができます。

おすすめ記事