rsyncでマイクラを差分バックアップ
丸ごとコピーしてバックアップ取ると同じファイルが何度もコピーされて非効率
rsyncで変更されてないファイルをハードリンクにする
通常のバックアップでは訪問済みのリージョンをすべてコピーするが、この方法なら更新したリージョンだけがコピーされるので容量節約かつ高速化する
2021-11-19
Pythonにする
--exclude-from=FILE read exclude patterns from FILE
$ du -d 3 . | sort -nr
2021-10-25
code:bash
rsync -a --delete --link-dest=../ls | grep "backup" | tail -n1 minecraft_server backupTZ=Asia/Tokyo date +%Y%m%d_%H%M
解説
backupTZ=Asia/Tokyo date +%Y%m%d_%H%M
現在時刻を元にbackup20211025_1624みたいなファイル名を作る
ls | grep "backup" | tail -n1
backupを含むファイル名のうち最後のものを取得
rsyncのオプションのメモ
code::
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
-r, --recursive recurse into directories
-l, --links copy symlinks as symlinks
-p, --perms preserve permissions
-t, --times preserve modification times
-g, --group preserve group
-o, --owner preserve owner (super-user only)
-D same as --devices --specials
--devices preserve device files (super-user only)
--specials preserve special files
差分にする前に使っていたPythonスクリプト
code:python
import shutil
from datetime import datetime
IGNORE = """
.git
jdk*
*.jar
logs
block-backups
.archive-unpack
*.tar
""".strip().splitlines()
now = datetime.now().strftime("%Y%m%d_%H%M")
shutil.copytree(
"minecraft_server",
f"backup{now}",
ignore=shutil.ignore_patterns(*IGNORE),
)