今回もファイルのコピー処理の続きです。前回同様ラズベリーパイで動作するのをベースにして書いていますが、特に注意書きがない限りはWindows&Mac PowerShell、UNIX系シェル(bash,zsh)でも動作します。コマンドに慣れていない人はラズベリーパイ上または仮想環境上で実行した方がよいでしょう(ラズベリーパイのインストール・設定等については前回の記事を参照してください)。ファイル操作を行うコマンドに慣れたら実機、本番環境で実行してください。
ファイルのコピー
それではもっとサイズの大きいファイルをコピーしてみます。ビデオカメラで撮影した映像はサイズが大きいので、それをコピーしてみます。もちろん、他のサイズが大きいファイルがあれば、それでも構いません。また、大量の画像ファイルでも構いません(同じ拡張子のファイルをコピーするサンプルの時に使えますので)。
ちなみに元となる1つのファイルを大量に連番で複製する場合は以下のようにコマンドを入力します。(bash,zshで動作します。PowerShellでは動作しません)なお、元となるファイルはカレントディレクトリにあるsample.txtです。複製される連番ファイルも同じカレントディレクトリに生成されます。
for i in {1..10};do cp sample.txt ${i}.txt;done
1行でなく複数行で書くと以下のようなコードになります。
for i in {1..10};do
cp sample.txt ${i}.txt
done
1..10の10を100にすると100個同じファイルが連番で作成されます。ただ、GUIでも対象となるファイルを選択しコピーしペーストを繰り返せば2のn乗で複製が作れますし、今の時代はその方が楽かもしれません。
ということで本題に戻ります。
コピーする映像ファイルですが、外付けのカードリーダーから、ラズベリーパイのデスクトップ上とします。
写真のようにカードリーダーに映像ファイルが入っているSDカードを差し込みます。
SDカードを差し込むとラズベリーパイやWindowsではダイアログが表示される事がありますが、ここでは無視します。
ところでSDカードからコピーするにしても、肝心なSDカード内の映像ファイルの場所がわかりません。WindowsやMacではSDカードはドライブとして認識され自動的にマウントされます。
UNIX系の場合は特定のディレクトリパスの下に配置されます。接続されたドライブなどは、新たなディレクトリパスとしてアクセスできるようになるわけです。ここらへんのマウントポイントは自分で指定する事もできます。マウントポイントはOSや環境によって異なるので、ここではまずラズベリーパイに絞って説明します。
ラズベリーパイの場合、SDカードは以下のディレクトリ内にマウントされます。
/media/pi/
よく分からない場合は、GUIで表示されているSDカードのアイコンの上で右ボタンをクリックします。メニューから「端末で開く」(英語ならopen terminal)を選択します。すると、SDカードがマウントされたディレクトリをカレントディレクトリとして開いてくれます。
ターミナルが起動したらpwdとコマンドを入力すればカレントディレクトリのパスが表示されます。
ここからコピーする映像ファイルがあるディレクトリまでcdコマンドを使って移動します。今回コピーする映像ファイルのパスは長いので、cdコマンドを使って映像ファイルがあるディレクトリまで移動しておきます。
以下のように入力します。
cd /media/pi/CAM_SD/PRIVATE/AVCHD/BDMV/STREAM
一度にパスを入れずに、ひとつずつ確認しながらディレクトリ階層を移動しても構いません。確認する場合はlsコマンドを使えば良いでしょう。lsとだけ入力すればOKです。
cd /media
cd pi
cd CAM_SD
cd PRIVATE
cd AVCHD
cd BDMV
cd STREAM
映像ファイルがあるディレクトリまで移動したらlsコマンドでディレクトリ内にあるファイルを確認します。ここでは2つの映像ファイルがあります。00000.MTSと00001.MTSです。
確認したらcpコマンドで00000.MTSファイルをデスクトップ上にコピーします。
cp 00000.MTS ~/Desktop
ファイルサイズにもよりますが、しばらくするとコピーが終わります。 無事にコピーできればOKです。