rsync関連の「読み取り専用ファイルシステム(30)」エラー

rsync関連の「読み取り専用ファイルシステム(30)」エラー

注:これは、エラーが発生する理由と回避策の2つの部分で構成される質問です。 (「なぜ」質問への答えが「どのように」質問を明らかにすることができるので、2つの部分は互いに関連しています。)


私が試しているコマンドは、rsync -avuz /some/source/directory .(おおよそ)形式のいくつかのエラーを提供します

rsync: symlink "/target/directory/foo/bar/baz" -> "../../bar/baz" failed: Read only file system (30)

.../target/directory現在ディレクトリがある場所です。

このエラーのために混乱しています。rsyncプロセスに書き込み権限がないというのは事実ですが、../..そもそもなぜそうするのか理解できません。確かに書き込み権限があります/target/directory/foo/bar/baz

ただし、現時点では、この問題のあるファイルの数はコピーされるファイル全体のほんの一部にすぎないため、これらの問題のあるシンボリックリンクを通常のファイルに「コピー」してもかまいません。名前その特別な性格を示すために何らかの形で変更され、コンテンツ元のシンボリックリンクの宛先のみが含まれます。たとえば、シンボリックリンク

/some/source/directory/foo/bar/baz -> ../../bar/baz

以前に表示されたコンテンツは「コピー」されます。一般ファイル

/target/directory/foo/bar/baz-PSEUDOSYMLINK

...次のような行で構成されています。

../../bar/baz

UnixディレクトリツリーをWindowsシステムにコピーするときに同様のことが発生したことを見たことがあります。

これを行う簡単な方法はありますか?

ベストアンサー1

質問

私は私の音楽コレクション()を古い(したがってエラーが発生しやすい)ハードドライブ()にrsyncバックアップしてそれを使います。/mnt/Music/crontab/mnt/Music_Backups

crontabこのバックアップパーティションを手動で確認した後、手動バックアップの試みと同様に、これらのバックアップが時々(実行されている場合は自動的に)失敗することがわかりました。

sudo rsync -aq --delete /mnt/Music/ /mnt/Music_Backups

    rsync: [generator] failed to set times on \
    "/mnt/Music_Backups/ROCK & POP": Read-only file system (30)

評価する

私のシステムの詳細は次のとおりです。

  • オペレーティングシステム:アーチLinux x_86。
  • rsync バージョン v3.2.3
  • /etc/crontab入り口:
# /etc/crontab entry
0 5 * * * root nice -n 19 rsync -aq --delete /mnt/Music/ /mnt/Music_Backups

デバイス、パーティション、マウントポイントを確認してください。

lsblk | grep -B1 -i music_back

    sdd      8:48   1   1.8T  0 disk 
    └─sdd1   8:49   1   1.8T  0 part /mnt/Music_Backups

blkid | grep sdd1

    /dev/sdd1: LABEL="Music_Backups" \
    UUID="b90047d3-147c-491c-a17d-17763f79a12a" \
    BLOCK_SIZE="4096" TYPE="ext4" \
    PARTLABEL="Music_Backups" \
    PARTUUID="98425256-c626-41f1-a85e-6f5feaf412d6"

理由

ターゲットドライブの権限は良好ですが、rsync次の操作後も同じエラーが発生しました。

sudo chown -R root:victoria /mnt/Music_Backups/

...ディスクパーティションユーティリティ()Gpartedはパーティションは問題ないようですが、コマンドラインユーティリティはfsck実際にエラーがあることを示しています。

sudo umount /mnt/Music_Backups/

## Note: if any programs, e.g. a file manager, are using / viewing
## that partition you won't be able to `umount` it until you navigate
## away from anything accessing `/mnt/Music_Backups/`

## Update/CAUTION: do not run fsck on a Network Attached Storage (NAS) 
## hard drive (commonly sold on AMZN ...); these require special 
## software; fsck will kill your HDD.

sudo fsck /dev/sdd1

    fsck from util-linux 2.36
    e2fsck 1.45.6 (20-Mar-2020)
    Music_Backups: recovering journal
    Music_Backups contains a file system with errors, check forced.
    Pass 1: Checking inodes, blocks, and sizes
    Inode 85460709 extent tree (at level 1) could be shorter.  Optimize<y>? yes
    Pass 1E: Optimizing extent trees
    Pass 2: Checking directory structure
    Pass 3: Checking directory connectivity
    Pass 4: Checking reference counts
    Pass 5: Checking group summary information

    Music_Backups: ***** FILE SYSTEM WAS MODIFIED *****
    Music_Backups: 164762/122101760 files (19.8% non-contiguous), 423271337/488378368 blocks

## Recheck:

sudo fsck /dev/sdd1

    fsck from util-linux 2.36
    e2fsck 1.45.6 (20-Mar-2020)
    Music_Backups: clean, 164762/122101760 files, 423271337/488378368 blocks

sudo mount /dev/sdd1 /mnt/Music_Backups/

sudo rsync -aq --delete /mnt/Music/ /mnt/Music_Backups

$ ## completed normally

結論として

これに基づいて、私のOSがパーティション上のエラーを検出した場合、そのエラーが解決されるまでそのパーティションへの読み取りと書き込みをブロックしてrsync操作を完了できないと思います。


ノート

rsync:

  • -a[archive]: と同じです-rlptgoD。再帰的でほぼすべてを維持したいことを表すショートカットです... [https://linux.die.net/man/1/rsync参照]

  • -q[quiet]:エラーではなくメッセージを抑制します。


付録1:失敗通知

前述したように、etc/crontabバックアップ予約何も言わずに 失敗。この問題の解決策は次のとおりです(に追加されました/etc/crontab)。

DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"

# add this as one line (broken here, for readability;
# substitute your user name for "victoria"):

0  5  *  *  *  victoria  nice -n 19
  rsync -aq --delete /mnt/Music/ /mnt/Music_Backups ; EXIT_STATUS=$?;
  if [ $EXIT_STATUS -ne 0 ]; then
  notify-send -i warning -t 0 "/etc/crontab for rsync'd Music Backups failed"
  --icon=dialog-information ;
  mutt -s "/etc/crontab for rsync'd Music Backups failed" <your_email_address>; fi

これにより、後でバックアップが失敗した場合に画面通知と電子メールで通知が届きます。


notify-sendmuttそして使用にはいくつかの問題があることに注意してください/etc/crontab

  • 一般ユーザーroot(「victoria」など)で実行すると、通知は表示されず、そのユーザーmuttroot電子メールアカウントを設定する必要があります。

  • crontabしたがって、通常のユーザーとしてアイテムを実行する方がはるかに簡単です。chownバックアップの場所を再帰的に設定したroot:victoriaため、crontabその項目を「victoria」として実行することは問題になりません。

  • 上記のようにnotify-sendviaを実行するには、/etc/crontab上部近くに次の行が必要です/etc/crontab

DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"

echo $UID通常のユーザー(「victora」(me)など)を端末で実行して、数値(上記の「1000」)を取得します。

詳細については、次を参照してください。

それにもかかわらず、私のcrontabエントリ(上記)は毎朝午前5時に実行され、何らかの理由でバックアップが失敗した場合は私に知らせます(画面、電子メール)。

このエントリを使用してこれらのコマンドをテストできますcrontab(1分ごとに実行されます。「apples」はプログラムではないため、間違いなく失敗します)。

*  *  *  *  *  <your_user_name>  nice -n 19
  apples -aq --delete /mnt/Music/ /mnt/Music_Backups ; EXIT_STATUS=$?;
  if [ $EXIT_STATUS -ne 0 ]; then
  notify-send -i warning -t 0 "/etc/crontab for rsync'd Music Backups failed"
  --icon=dialog-information ;
  mutt -s "/etc/crontab for rsync'd Music Backups failed" <your_email_address>; fi

付録2:失敗通知

rsync バックアップ失敗 mutt メール通知 (Claws Mail で表示)

[victoria@victoria ~]$ date
  Wed Jan  6 08:48:38 AM PST 2021

[victoria@victoria ~]$ lsblk

  NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
  ...
  sdd      8:48   1   1.8T  0 disk 
  └─sdd1   8:49   1   1.8T  0 part /mnt/Music_Backups
  ...

[victoria@victoria ~]$ sudo umount /mnt/Music_Backups/

## Update/CAUTION: do not run fsck on a Network Attached Storage (NAS) 
## hard drive (commonly sold on AMZN ...); these require special 
## software; fsck will kill your HDD.

## Repair disk partition [accept default Y/n suggestions, if present]:

[victoria@victoria ~]$ sudo fsck /dev/sdd1
  fsck from util-linux 2.36.1
  e2fsck 1.45.6 (20-Mar-2020)
  Music_Backups: recovering journal
  Music_Backups contains a file system with errors, check forced.
  Pass 1: Checking inodes, blocks, and sizes
  Pass 2: Checking directory structure
  Pass 3: Checking directory connectivity
  Pass 4: Checking reference counts
  Pass 5: Checking group summary information
  Music_Backups: 165909/122101760 files (20.0% non-contiguous), 425759721/488378368 blocks

## Repeat until no errors:

[victoria@victoria ~]$ sudo fsck /dev/sdd1
  fsck from util-linux 2.36.1
  e2fsck 1.45.6 (20-Mar-2020)
  Music_Backups: clean, 165909/122101760 files, 425759721/488378368 blocks

[victoria@victoria ~]$ sudo mount /dev/sdd1 /mnt/Music_Backups/

## /etc/crontab entry (broken over lines here for readability):

  0    5    *    *    *    victoria    nice -n 19
  rsync -aq --delete /mnt/Music/ /mnt/Music_Backups ; STATUS=$? ;
  if [ $STATUS -ne 0 ]; then notify-send -i warning -t 0 "/etc/crontab
  for rsync'd Music Backups failed" --icon=dialog-information ;
  mutt -s "/etc/crontab for rsync'd Music Backups failed" [email protected] ;
  fi

## Check: manually run Music_Backup command

[victoria@victoria ~]$ time rsync -aq --delete /mnt/Music/ /mnt/Music_Backups
  0:39.91

[victoria@victoria ~]$ 

おすすめ記事