同じフォルダーを持つ別のディレクトリ内のディレクトリの内容を移動したい。
次に例を示します。
./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
に移動する必要がありますbackup
cp -R --parents ...
注 2:backupArchives
バックアップから新しいファイルを取得した場合は、ディレクトリを再確認してください。