生成されたRsyncターゲットディレクトリが大きすぎるようです。

生成されたRsyncターゲットディレクトリが大きすぎるようです。

簡単なスクリプトを使用して、rsyncを介してローカルLinuxステーション(XFSファイルシステム)から接続されている外部HD(NTFSファイルシステム)への増分バックアップを作成します。

#!/bin/sh
TIMESTAMP=`date "+%Y-%m-%dT%H-%M-%S"`
USER=USER1
SOURCEDIR=/data
TARGETDIR=/run/media/sbembenek/easystore1

# Create new backup using rsync and output to log
rsync -avPh --delete --link-dest=$TARGETDIR/$USER-Current $SOURCEDIR/$USER/ $TARGETDIR/$USER-$TIMESTAMP > /archive/Backup-Logs/$USER-$TIMESTAMP.log 2>&1
# check exit status to see if backup failed
    if [ "$?" = 0 ]; then
# Remove link to current backup
        rm -f $TARGETDIR/$USER-Current
# Create link to the newest backup
        ln -s $TARGETDIR/$USER-$TIMESTAMP $TARGETDIR/$USER-Current
    else
# Rename directory if failed
        mv $TARGETDIR/$USER-$TIMESTAMP $TARGETDIR/failed-$USER-$TIMESTAMP
    fi

こうして作成されたバックアップディレクトリを「du -h -d1」を使用して確認しました。作成された最初のバックアップディレクトリは実際には最も大きく、後続のディレクトリは小さいですが、後続のディレクトリのサイズはすべてほぼ同じであることがわかりました。つまり、「基本的に」ファイル間に変更されたファイルがなくても、後者のディレクトリが前者よりはるかに小さいことを見たことはありません。サイズによっては、バックアップが増分バックアップと比較して(最初のバックアップと比較して)より差別化されているように見えました。

異なる仮想セットの場合、すべてのバックアップディレクトリは初期バックアップと同じです。私は何を見逃していますか?

ベストアンサー1

私はあなたの解決策がおそらく何をすべきかをやっていると言いたいです。

いくつかのコードの問題があります。すべての変数を二重引用符で囲む必要があります(例:)ln -s "$TARGETDIR/$USER-$TIMESTAMP" "$TARGETDIR/$USER-Current"。私が知る限り、あなたは完全に変わりましたrsnapshot

混乱はファイルのハードリンクに由来するようです。ハードリンクは、ファイルがディレクトリにあるように見えるだけでなく、実際にははいこのディレクトリに。各バックアップはフルバックアップセットのコピーのように見えますが、詳しく見ると、バックアップセット間で変更されていないファイルは1つのストレージインスタンスしか使用しないことがわかります。 100 GBのバックアップがあり、90%破損していない場合、2つのバックアップセットは110 GBしか占有できませんが、個別に測定する場合は、各バックアップセットは100 GBを使用します。

このduコマンドはファイル使用量を一度だけ計算するため、バックアップ層全体でそれを使用してバックアップセット間の実際の違いを確認できます。

はい

# The same file, linked
ls -l top/dir?/*
-rwxrwx---+ 2 roaima roaima 1690442768 May  2 17:56 top/dir1/file.mp4
-rwxrwx---+ 2 roaima roaima 1690442768 May  2 17:56 top/dir2/file.mp4

# First directory
du -hs top/dir1
1.6G    top/dir1

# Second directory
du -hs top/dir2
1.6G    top/dir2

# Both directories, but each file is counted only once
du -hs top/dir?
1.6G    top/dir1
0       top/dir2

# All directories, but each file is counted only once
du -hs top
1.6G    top

あなたの例でこれを試してください

du -hs "$TARGETDIR"/*

おすすめ記事