Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Timeshift | 4,440 | 5 months ago | 458 | lgpl-3.0 | Vala | |||||
System restore tool for Linux. Creates filesystem snapshots using rsync+hardlinks, or BTRFS snapshots. Supports scheduled snapshots, multiple backup levels, and exclude filters. Snapshots can be restored while system is running or from Live CD/USB. | ||||||||||
Rsync Time Backup | 2,851 | 7 days ago | 1 | March 03, 2021 | 101 | Shell | ||||
Time Machine style backup with rsync. | ||||||||||
Rsnapshot | 2,753 | 7 days ago | 1 | February 27, 2018 | 41 | gpl-2.0 | Perl | |||
a tool for backing up your data using rsync (if you want to get help, use https://lists.sourceforge.net/lists/listinfo/rsnapshot-discuss) | ||||||||||
Backintime | 1,545 | 9 days ago | 209 | gpl-2.0 | Python | |||||
Back In Time - A simple backup tool for Linux | ||||||||||
Rsyncosx | 1,139 | 3 days ago | mit | Swift | ||||||
A macOS GUI for rsync. Compiled for macOS Big Sur and later | ||||||||||
Backuppc | 1,075 | 10 months ago | 120 | gpl-3.0 | Perl | |||||
BackupPC is a high-performance, enterprise-grade system for backing up to a server's disk. | ||||||||||
Bitpocket | 987 | 2 years ago | 28 | mit | Shell | |||||
"DIY Dropbox" or "2-way directory (r)sync with proper deletion" | ||||||||||
Rdiff Backup | 853 | 23 days ago | 60 | gpl-2.0 | Python | |||||
Reverse differential backup tool, over a network or locally. | ||||||||||
Raspibackup | 555 | 2 days ago | 4 | gpl-3.0 | Shell | |||||
Backup and restore your active Raspberry | ||||||||||
Linux Timemachine | 533 | 8 months ago | 4 | mit | Shell | |||||
Rsync-based OSX-like time machine for Linux, MacOS and BSD for atomic and resumable local and remote backups |
I have been use Back In Time as time machine style backup for several years. It worked very well until I recently need to take periodical snapshots for a file server. Backintime cannot directly backup the remote machine, it must mount remote via sshfs, which is less efficient than running rsync through ssh, hence this script.
This script does not attempt to remove old snapshots if there lacks enough free space.
time-machine.py -c mybackup.conf
See time-machine.conf for config example. The config file splits into five sections:
source: the backup source.
dest: a local path to store all snapshots.
smart_remove: specify how to keep old backups. It recognizes four options.
keep_all
keep_one_per_day
keep_one_per_week
keep_one_per_month
The default values will be used if these options is empty or commented out.
exclude: the rsync exclude patterns.
free space: the minimum free space and inodes requirements. Backup will not start if there is not enough space or inodes. Again, default value will be used if option is not set.
Snapshots are named after GMT time stamp. A log file, time-machine.log
,
is generated under the root of backup destination folder. After run a backup
job periodically for some time, the backup folder should look like:
├── 2013-12-31_22:17:01_GMT
├── 2014-12-31_22:17:01_GMT
├── 2015-05-31_22:17:01_GMT
├── 2015-06-30_22:17:01_GMT
├── 2015-07-31_22:17:01_GMT
├── 2015-08-31_22:17:01_GMT
├── 2015-09-30_22:17:01_GMT
├── 2015-10-31_22:17:01_GMT
├── 2015-11-30_22:17:01_GMT
├── 2015-12-31_22:17:01_GMT
├── 2016-01-31_22:17:01_GMT
├── 2016-02-29_22:17:01_GMT
├── 2016-03-20_22:17:01_GMT
├── 2016-03-27_22:17:01_GMT
├── 2016-03-31_22:17:01_GMT
├── 2016-04-03_22:17:01_GMT
├── 2016-04-04_22:17:01_GMT
├── 2016-04-05_22:17:01_GMT
├── 2016-04-06_22:17:01_GMT
├── 2016-04-07_22:17:01_GMT
├── 2016-04-08_10:17:01_GMT
├── 2016-04-08_12:17:01_GMT
├── 2016-04-08_14:17:01_GMT
├── 2016-04-08_16:17:01_GMT
├── 2016-04-08_18:17:01_GMT
├── 2016-04-08_20:17:01_GMT
├── 2016-04-08_22:17:01_GMT
├── 2016-04-09_00:17:01_GMT
├── 2016-04-09_02:17:01_GMT
├── 2016-04-09_04:17:01_GMT
├── 2016-04-09_06:17:01_GMT
├── 2016-04-09_08:17:01_GMT
├── 2016-04-09_10:17:01_GMT
├── latest -> /my/backup/destination/time-capsule/2016-04-09_10:14:13_GMT
└── time-machine.log
There is also a small tool for comparing snapshots. Files from two snapshots
that share same inodes are considered unchanged. Execute make
to compile then
run:
cmpdir old-snapshot-directory new-snapshot-directory
See the LICENSE file for license rights and limitations (GNU GPL v2).