mv: ディレクトリが空ではありません

mv: ディレクトリが空ではありません

同じフォルダーを持つ別のディレクトリ内のディレクトリの内容を移動したい。

次に例を示します。

./backupにはディレクトリbaseとがありますtest。ここで、これらのディレクトリを に移動したいと考えています./backupArchives

私はこれを使用します:

mv ./backup/* ./backupArchives

しかしエラーが発生しました

mv: cannot move './backup/base' to './backupsArchive/base': Directory not empty

を使ってみました--forceが、うまくいきませんでした。フォルダーがすでに存在する場合に移動する方法はありますか?

注: 内容を結合するだけなので、上書きはありません。

答え1

マニュアルページには記載されていないが、mvターゲットディレクトリにファイルが含まれている場合、ディレクトリ名を別のディレクトリに変更することを拒否します。これは、あなたのケースでは良いことです。なぜなら、マージソースの内容をターゲットにコピーしても、うまくmvいきません。

代わりにを使用してくださいrsync -a backup/ backupArchives/。その後はrm -rf backup/*.

を使用する代わりにrsync、古典的な方法を使用することもできます

(cd backup && tar c .) | (cd backupArchives && tar xf -)

これにより、より多くのオタクポイントを獲得できます。

答え2

何をやっているか分かっているなら、手っ取り早く、汚いやり方で:

cp -r ./backup/* ./backupArchives && rm -R ./backup/*

答え3

移動するディレクトリの後に*(任意のテキストまたは数字を表します) が必要です。例:

mv /var/www/* /recovery/wwwrecovery/

以上です。ファイルを移動する場合は、次のように移動します。

mv /var/www/index.php /recovery/index.php

別の方法としては、tar を使用してそのフォルダーの内容をパックする方法があります。

tar -cvzpf backup.tar.gz /var/www 

次に、それを他のファイルに移動します。また、tar はそれを圧縮してサイズを小さくするため、この手順をお勧めします。

ファイルを別のフォルダに抽出するには、

tar -xvzpf /var/www/

所有していない場所にコピーする必要がある場合は、sudo使用するオプションの後にコマンドを必ず追加してください。

sudo tar -cvzpf backup.tar.gz /var/www/

答え4

確かにrsync動作しますが、サポートされていないマシンでも動作する可能性がありますrsync(つまり、rsync がデフォルトでインストールされていない cpanel など)。

以下を使用するとどうでしょうか:

cd /path/to/backup/ && cp -R --parents ./* ../backupArchives

backup必要に応じてディレクトリを削除します

注1:​​実行する前にディレクトリcdに移動する必要がありますbackupcp -R --parents ...

注 2:backupArchivesバックアップから新しいファイルを取得した場合は、ディレクトリを再確認してください。

関連情報