web-dev-qa-db-ja.com

Linux(Ubuntu):コマンドライン経由でUSBフラッシュディスクを安全に削除する

シェルスクリプトが、ジョブの終了後にフラッシュディスクを安全に取り外しますを支援してくれるのはすばらしいことです。次のニーズを満たすことが期待される解決策を求める質問を投稿する前に、多くの宿題をしました。

  1. フラッシュディスクが他の多くのフラッシュディスクと一緒に/media/Aとしてマウントされ、コードが他のディスクに干渉することなく/media/Aを選択的に削除できるとします。たとえば、/media/Aを引数として渡すことができます。
  2. 軽いソリューション。タスクを完了するためにサイズが100MBの別のパッケージをインストールすると、夢中になります。
  3. hdparmのようないくつかのコマンドを知っていますが、それらのドキュメントは読みにくいです。私に解決策を提供できる場合は、パラメータなどの説明も提供できることを願っています。
  4. コードがすべての種類のフラッシュディスク(たとえば、2003年に32Mbで購入した私の古いもの)(およびオプションでポータブルディスク)を処理できる場合に最適です。
  5. ディスクを右クリックして「ドライブを安全に削除」をクリックすることで、正確な効果が得られるはずです。安全性の懸念が優先されます。そうしないと、通常はディスクを取り外すだけで、通常は損傷しません。
49
Xin Guo

これを行うには、udisksを使用します。デフォルトではインストールされませんが、インストールするのに十分なほど簡単です(パッケージは、インストールするとサイズが1メガバイトになります)...

Sudo apt-get install udisks

インストールしたら、次のコマンドでUSBドライブを取り外すことができます...

Sudo udisks --unmount /dev/sdb1
Sudo udisks --detach /dev/sdb

最初の行でアンマウントします。他のパーティションと同様に、この時点でも再マウントできます。 2行目で切り離します。この後、電源がオフになり、再マウントするには削除/再挿入する必要があります。

明確にするために、sdbはデバイスであり、sdb1/2/3/etcはデバイス上のパーティションです。また、デバイスをデタッチする前に、すべてのマウントポイントをアンマウントする必要があります。通常、USBスティック/ドライブには1つしかありませんが、それでもなお知っておくべき警告です。

マウントポイントからデバイス名を取得するには、マウントなどからデバイス名を取得する必要があります。

50
Omnikrys