---
slug: "how-to-delete-old-backup-file-simply"
title: "数日ごとにバックアップファイルをローテーションするシェルスクリプト"
description: "数日ごとにバックアップファイルをローテーションする (古いファイルを削除する)場合、1日1づつ増える日数の連番を、% 10 とかでシャーディングすればいいことに気づいたので、最近は以下の方法で行っている。"
url: "https://www.ytyng.com/blog/how-to-delete-old-backup-file-simply"
publish_date: "2022-11-27T15:03:04Z"
created: "2022-11-27T15:03:04Z"
updated: "2026-02-27T05:44:56.528Z"
categories: []
keywords: ""
featured_image_url: "https://media.ytyng.com/resize/20250711/2065914dc7d645a086323052ec04e57f.png.webp?width=768"
has_video: false
has_music: false
video_urls: []
music_urls: []
lang: "ja"
---

# 数日ごとにバックアップファイルをローテーションするシェルスクリプト

数日ごとにバックアップファイルをローテーションする (古いファイルを削除する)場合、

```sh
find backup-dir/ -mtime +10 | xargs rm
```

としたり、 `logrotate` を使って実現させたりする。

1日1づつ増える日数の連番を、% 10 とかでシャーディングすればいいことに気づいたので、最近は以下の方法で行っている。

```sh
# 一日ごとにシャード番号が変化する。 10 日でローテーションする。
date_shard=$(( ( $(date +%s) / 86400 ) % 10 ))

backup-command > backup-dir/backup.${date_shard}

echo $(date +"%F %T") Done. shard=${date_shard} >> backup-dir/log.txt
```

シンプルに実現できる。
