{"id":23576141,"url":"https://github.com/goggle/backupper","last_synced_at":"2025-05-05T19:29:21.052Z","repository":{"id":146922943,"uuid":"44937509","full_name":"goggle/backupper","owner":"goggle","description":null,"archived":false,"fork":false,"pushed_at":"2015-10-31T12:38:38.000Z","size":196,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-30T23:04:49.977Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/goggle.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-10-26T00:58:06.000Z","updated_at":"2023-03-09T13:33:31.000Z","dependencies_parsed_at":"2023-04-11T12:17:25.453Z","dependency_job_id":null,"html_url":"https://github.com/goggle/backupper","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goggle%2Fbackupper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goggle%2Fbackupper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goggle%2Fbackupper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goggle%2Fbackupper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/goggle","download_url":"https://codeload.github.com/goggle/backupper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252562490,"owners_count":21768300,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-26T21:12:49.956Z","updated_at":"2025-05-05T19:29:21.037Z","avatar_url":"https://github.com/goggle.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Backupper\n\nBackupper is a backup program written in Python 3. It's for people who want to have an easy way to have regular backups of certain directories, rather than the whole system. It supports full backups and incremental backups. Backupper has only been tested on Linux.\n\n## Installation\n\nBackupper comes with a distutils setup script. Just run\n```\npython setup.py --optimize=1\n```\n\nBackupper depends on python 3 and GNU tar (https://www.gnu.org/software/tar/), so make sure that you have these programs installed. Optional dependencies are gzip, bzip2 and xz, if you want to use compression, and systemd, if you want to use the provided systemd timer.\n\nArch Linux users can install backupper from the AUR: https://aur.archlinux.org/packages/backupper/\nIt also installs the systemd timer files, so you just need to activate \"backupper-daily.timer\", if you want to use it.\n\n\n## Configuration\n\nBackupper can be configured through through a config file called backupper.conf. This config file can be stored either globally in /etc/backupper.conf or locally /home/user/.config/backupper.conf. If both files exist, the local version has precedence.\n\nA config file might look like this:\n```\n[Default]\nBackupDirectory = /mnt/second_harddisk/backup\nRecoveryDirectory = /mnt/second_harddisk/\nLogFile = /var/log/backupper.log\n\n[Documents]\nDirectory = /home/goggle/Documents\nCompression = xz\n\n[Music]\nDirectory = /home/goggle/Photos\nCompression = tar\n\n[Data]\nDirectory = /home/goggle/data\nCompression = bz2\n\n[Projects]\nDirectory = /home/goggle/projects\nCompression = gz\n```\n\nEach config file needs to have a [Default] section, where the global configuration options are set. The variable \"BackupDirectory\" specifies a path to a directory, where the backups are saved. The variable \"RecoveryDirectory\" must be set to a directory, where to backups are extracted. The \"LogFile\" variable specifies a log file to log the output of the backupper program.\n\nFor each directory that should be backed up, create a new [BackupName] entry. Set the \"Directory\" variable to the path of the directory to back up and choose a compression type stored in the \"Compression\" variable. Valid compression types are \"tar\" for no compression (it creates only a .tar file), \"gz\" or \"gzip\" for gzip compression (it creates a .tar.gz file), \"bz2\" or \"bzip2\" for bzip2 compression (it creates a .tar.bz2 file) and \"xz\" for xz compression (it creates a .tar.xz file).\n\n## Usage\n\nAfter having configured backupper, it is ready to use. Before being able to make incremental backups, we need to have a full backup of our directories. To let backupper perform a full backup, run \n```\nbackupper -f\n```\nor \n```\nbackupper --full-backup\n```\nBackupper will store the backups in the specified backup directory from the configuration file. It also stores a snapshot file there, where the file changes will be tracked.\n\n\nFrom now on, we can let backupper create incremental backups, so only the changes from the previous available backup will be stored. To do this, run\n```\nbackupper -i\n```\nor\n```\nbackupper --incremental-backup\n```\nIf you want to have automatically incremental backups, you can either run \"backupper --incremental-backup\" from a cronjob or use the provided systemd timer. See also the next section.\n\n\nIf you need to recover a backup, run\n```\nbackupper -x\n```\nor \n```\nbackupper --recover\n```\nIt will recover the newest saved backups into the specified recovery directory from the configuration file.\nIf you want to recover a backup only up to a certain date, you can run\n```\nbackupper --partial-recover-to-date backup_entry date\n```\nwhere \"backup_entry\" is a specified entry in the configuration file and \"date\" is in the form year-month-day-hour:minute:second. For example, if we want to recover our \"Documents\" from the configuration file above up to Monday, October 26, 2015, 22:30, we would run\n```\nbackupper --partial-recover-to-date Documents 2015-10-26-22:30:00\n```\n\n\nIf you have several full backups stored and want to remove all the backups before the newest stored full backup, run \n```\nbackupper -r\n```\nor \n```\nbackupper --remove\n```\n\n### Systemd timers\nBackupper provides a systemd timer to have a daily incremental backup. To use this, copy the provided systemd timer (timers/backupper-daily.timer) and systemd service file (timer/backupper-daily.service) to systemd service file path on your system (usually /etc/systemd/system/) and run \n```\nsystemctl enable backupper-daily.timer\n```\n\n### Logging\nBackupper uses a log file specified in the configurations, to log all its activities. It's recommended to regularly check this log file for warnings and error, to make sure that everything works fine.\n\n\n## General Recommodations\n* Before using backupper, test if it works fine for you. Create a full backup of some stuff, edit/add/remove some files, create some incremental backups and recover the backups. Try also to recover to a certain date.\n* Store your backups on another physical disk than your data. Otherwise, the backup is useless!\n* Make sure that the user who runs backupper has the appropriate permissions for all the directories, which backupper accesses. So if for example you want to backup the whole /etc directory, backupper might need to run as root. Errors including permission problems are not caught yet!\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoggle%2Fbackupper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoggle%2Fbackupper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoggle%2Fbackupper/lists"}