Linuxでファイルを削除できない

Linuxでファイルを削除できない

'rsync --archive --update' を使用してホーム ディレクトリを ext4 から btrfs にバックアップした後、rsync は次のようなエラーを報告します。

rsync: readdir("/mnt/backup/home/me/.mozilla/firefox/qbdcaxwe.default/sessions/????????? ??????"): Not a directory (20)                
rsync: rename "/mnt/backup/home/me/.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN" ->                           
+"home/me/.mutt/cache/bodies/imaps:[email protected]/INBOX/3-13228": Not a directory (20) 

これらの項目を 'rm' で削除しようとすると、この項目はディレクトリであるというエラー メッセージが表示されます。しかし、'rm -d' は「削除できません...: そのようなファイルまたはディレクトリはありません。」というメッセージで失敗します。'btrfs check' と 'btrfs scrub' では、ファイル システム エラーは見つかりませんでした。

以下は 'file'、'rm'、および 'rmdir' コマンドの出力です。

$ file /.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN
/.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN: SMTP mail, Non-ISO extended-ASCII text, with very long lines
$ rm /.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN
rm: remove regular file ‘/.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN’? y
rm: cannot remove ‘/.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN’: Not a directory
$ rmdir /.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN
rmdir: failed to remove ‘/.../.mutt/cache/bodies/imaps:[email protected]/INBOX/.3-13228.NMKGEN’: Not a directory

このようなファイルシステム項目を削除するにはどうすればよいでしょうか?

答え1

アプリがファイルを開いたままにしたり、ファイルやディレクトリを追加/削除したりしてバックアップ プロセスに干渉する可能性があるため、アプリの実行中にユーザーがユーザーのホームディレクトリのバックアップを実行すると、問題が発生する可能性があります。

可能であれば、ユーザーがログアウトしているときに root としてバックアップを作成する方がはるかに良いでしょう。

または、バックアップ中に実行しているアプリの数を最小限に抑えるようにしてください (GUI を終了し、コマンドライン ターミナルから rsync コマンドを実行します)。

最後に、一部のアプリケーションでは、ファイル名やディレクトリ名に特殊文字が使われており、さまざまなユーティリティを混乱させる可能性があります。これらの場合は、その発生を追跡し(出力をファイルにリダイレクトするのが最善です)、代替ソリューション(文字のエスケープ、タブ必要に応じて、ファイル名やディレクトリ名を自動補完するキーやその他のコピーユーティリティも使用できます。

答え2

btrfs を使用している場合は、その機能を活用してみませんか?

スナップショットを撮ります:

sudo btrfs sub snap /home/me /home/me/.$(date +%Y-%m-%d_%H%M%S)_snapshot

ライブ データではなく、古いバックアップをスナップショットに rsync します。

rsync --archive --update /mnt/backup/home/me/ /home/me/$(sudo btrfs subvolume list -c /home/me|tail -n1|awk '{print $NF}')/

(私は主に rsync -mauvPAX from/ to/ # を使用しますが、そのすべてが必要なわけではないかもしれません。)

btrfs があれば、ライブ データではなくスナップショットをバックアップできるため、この問題を回避できるはずです。

関連情報