Linuxのディレクトリコピーと削除のコマンドオプションとは

2017年12月18日

Linuxでファイルをコピーする場合、ほとんど注意は必要ないですね。

ところが、Linuxでライブラリをコピーするには、ちょっと注意がいります。

ファイルをコピーする時と同様に実行しようとすると、指定した内容がファイルではないとのワーニングが出るんです。

この記事では、ラズパイで SCPコマンドを使用してディレクトリをコピーする場合と、ディレクトリを削除する場合のコマンドオプションについて記します。

皆様のご参考になれば。

スポンサーリンク

ディレクトリをコピーしようとしたら…

60爺は、ディレクトリの中身全てを SCP(sshを使ってネットワーク・ホスト間でファイルを安全にコピーする)コマンドを使用してコピーしようとしました。

その際、次のエラーに遭遇しました。

XXXXXXXX@raspbian:~/Downloads/bluebacks $ scp /home/XXXXXXXX/Downloads/bluebacks pi@192.168.254.219:/home/pi/bluebacks
pi@192.168.254.219's password:
/home/XXXXXXX/Downloads/bluebacks: not a regular file

なんと「not a regular file」とのワーニングが出ました。bluebacksはディレクトリですが、SCPコマンドだけではエラーとなるんですね。

SCP(CP) コマンドを使用してディレクトリをコピーするには、相手がディレクトリの場合、オプション指定が必須なんです。

そのオプションが -r です。このオプションは、ディレクトリ全体(ディレクトリの中のファイルもコピーの対象となります)をコピーすることを示します。

このオプションを追加して再実行しました。

XXXXXXXXX@raspbian:~/Downloads/bluebacks $ scp -r /home/XXXXXXXX/Downloads/bluebacks pi@192.168.254.219:/home/pi/bluebacks
pi@192.168.254.219's password:
bb2-08-02-6legs-pca9685.py 100% 5394 5.3KB/s 00:00
bb2-08-01-zero-pca9685.py 100% 1273 1.2KB/s 00:00
bb2-03-02-dice.py 100% 1407 1.4KB/s 00:00
bb2-04-02-forcast.py 100% 986 1.0KB/s 00:00

今度は、うまくいきました。

ディレクトリの中にあるファイルが全てコピーされたのが分かります。


ディレクトリ削除のコマンド

さて、ディレクトリのコピーが出来たので、今度はディレクトリの削除をやってみましょう。

エラー発生

ファイルが入っているディレクトリを削除する場合です。

pi@raspberrypi:~/bluebacks $ ls
bluebacks
pi@raspberrypi:~/bluebacks $ rmdir bluebacks/
rmdir: `bluebacks/' を削除できません: ディレクトリは空ではありません

単純に、rmdir コマンドを使用しましたが、上記のように rmdirはファイルが入っているディレクトリを削除できません。

pi@raspberrypi:~/bluebacks $ rmdir -r bluebacks/
rmdir: 無効なオプション -- 'r'
Try 'rmdir --help' for more information.

それじゃ、コピーで使用した -r オプションをつけてやってみたら、「rmdir: 無効なオプション — 'r’そんなオプションはねェっ!)」て怒られちゃいました。

SCPコマンドでは「-r」だったので、rmdirでも使えるかと思いましたが違いました。

ちゃんと調べないとダメですね。

正しいオプションで解決

調べてみると、rmdirでは、ディレクトリの削除は出来ません!

ファイルが入っているディレクトリを削除するコマンドは rm、オプションは -r でした。

pi@raspberrypi:~/bluebacks $ rm -r bluebacks/
pi@raspberrypi:~/bluebacks $ ls
pi@raspberrypi:~/bluebacks $

このコマンドとオプションを使用することで、無事ディレクトリを削除できました。

注意事項

rm, rmdirコマンドでディレクトリやファイルを削除した場合、コマンドを実行後、復元はできません。

そのため、これらのコマンドを使用する際は慎重に実施しましょう!

重要なファイルやディレクトリの時は、それらのバックアップを取った後、rm,rmdir コマンドを実施することをお勧めします。

最後に

Linuxでディレクトリのコピーおよび削除を行う際の注意点を示しました。

コピーを行う際、ファイルと同じようにディレクトリを指定してコマンドを実行するとワーニングが出ます。

ディレクトリのコピーには、-rオプションが要ります。

ファイルの削除はrmdirで行いますが、ディレクトリの削除は、rmコマンドでオプション-rが必須なんです。

ウーン、難しい!

※思えば、「コマンド」で記事も増えてきました。

参考
・【 rmdir 】 ディレクトリを削除する

スポンサーリンク
この記事を書いた人

60爺

60路を越え、RaspberryPi と出会い、その関係でブログ開設(2017/2~)となりました。始めてみると、コツコツやるのが性に合ってしまい、漢字の記事から家の補修・将棋・windows10関係・別名・言い方などジャンルを拡大して今に至ってます。まだまだ、元気なので新たな話題を見つけて皆様に提供できればと思っています。「プロフィールはこちら

コマンド

Posted by 60爺