使用法

使用法

私は、約 1,000 個の USB フラッシュ ドライブに同じファイルをロードする必要があるイベントで彼女を手伝っています。

これはかなり小さなファイル(わずか数 MB)ですが、面倒なのは実際にファイルをコピーすることです。

USB フラッシュ ドライブを挿入した瞬間にファイルを自動的にコピーする方法はありますか? これがあれば彼女の仕事は非常に簡単になります。

私のデスクトップ OS は Windows 10 ですが、Linux も利用できます。Linux 用の bash スクリプトを書いた方が簡単であれば、それを書くのも構いません。

答え1

Ubuntu 16.04 では USB フラッシュドライブが にマウントされています/media/$USER/LabelNameが、知らないうちにファイルのコピーを処理することが可能です。大まかなスクリプトは次のようになります。

#!/bin/bash
while sleep 1
do  [ -e /media/$USER/*/TheFile ] || cp TheFile /media/$USER/*/
    umount umount /media/$USER/*
    xmessage -center -timeout 3 "File copied - change disc"
done

これは原理を示すためのものです。必要なことの 1 つは、/media/$USER/開始する前に何もマウントされていないことを確認することです (最初のドライブがすでにマウントされている場合を除く)。TheFileパラメータまたは事前設定された環境変数に置き換えることができますが、パスがないように現在のディレクトリにあることを確認してください。そうしないと、ドライブにすでに存在しているかどうかのチェックが失敗します。

おそらく、インストールしなくても Ubuntu Live ディスクでこれらすべてを実行できますが、ペンドライブがマウントされている場所を確認し、必要に応じてスクリプトを変更する必要があります。また、xmessageLive ディスクに が含まれているかどうかはわかりません。そのため、ドライブを変更する必要があることを示す別の方法を使用しない限り、インストールする必要がある可能性があります。

答え2

の延長AFHの基本的な考え方Linux OS がフラッシュドライブを自動的にマウントすると仮定します/media/$USER

#! /bin/bash

src="$1"
target="$(basename "$src")"
counter=0

copyTo() {
    sleep 0.3 # wait for drive to be fully mounted
    printf -v offset '%*s' $(( counter * 15 % ($(tput cols) - 15) ))
    echo "$offset Copy to $counter"
    cp "$src" "$1/$target"
    sync "$1"
    umount "$1"
    echo "$offset Unmounted $counter"
}

inotifywait -me create --format "%w%f" "/media/$USER" |
while IFS='' read -r drive; do
    ((++counter))
    copyTo "$drive" &
done

使用法

  • まだインストールしていない場合はインストールしてくださいinotifywait。Ubuntu ではsudo apt install inotify-toolsインストールするために使用します。
  • ファイルマネージャ(例えばnemoやnautilus)を次のように設定します。ないマウントされたドライブを自動的に開きます。umountファイル マネージャー ウィンドウにマウント解除するドライブの内容が表示されている場合は失敗する可能性があります。
  • スクリプトを として保存しますautocopy.sh
  • スクリプトを実行可能にするには、chmod u+x autocopy.sh
  • スクリプトを開始するには./autocopy.sh '/path/to/file.ext'
  • 必要な数の USB フラッシュ ドライブを挿入します。スクリプトは、接続されたドライブを検出し、ファイルをコピーして、ドライブをアンマウントします。
  • 完了したら、 を押してCtrlCスクリプトを終了します。

出力

スクリプトは、ファイルがコピーされる前とドライブがアンマウントされた後に出力します。関連するメッセージは同じレベルでインデントされます。

Copy to 1
Unmounted 1
               Copy to 2
                              Copy to 3
                              Unmounted 3
               Unmounted 2
                                             Copy to 4
                                             Unmounted 4

数字は信頼できない可能性があります。同じスティックを 2 回挿入すると、2 回カウントされます。

関連情報