If you use Debian, you use TimeShift. You will thank me later 
Command line:
A summary of options is included below.
List:
--list[-snapshots] List snapshots.
--list-devices List devices.
Backup:
--check Create snapshot if scheduled.
--create Create snapshot (even if not scheduled).
--comments <string> Set snapshotdescription.
--tags {O,B,H,D,W,M} Add tags to snapshot (default:O).
Restore:
--restore Restore snapshot.
--clone Clone current system.
--snapshot <name> Specify snapshot torestore.
--target[-device] <device> Specify targetdevice.
--grub[-device] <device> Specify device forinstalling GRUB2 bootloader.
--skip-grub Skip GRUB2 reinstall.
Delete:
--delete Delete snapshot.
--delete-all Delete all snapshots.
Global:
--snapshot-device <device> Specify backup device(default: config).
--yes Answer YES to all confirmation prompts.
--btrfs Switch to BTRFS mode (default: config).
--rsync Switch to RSYNC mode (default: config).
--debug Show additional debug messages.
--verbose Show rsync output (default).
--quiet Hide rsync output.
--scripted Run in non-interactive mode.
--help Show all options.
Notes:
1) --create will always create a new snapshot
2) --check will create a snapshot only if a scheduled snapshot isdue
3) Use --restore without other options to select optionsinteractively
4) UUID can be specified instead of device name
5) Default values will be loaded from app config if options are notspecified
Code:
sudo update && sudo upgrade -y
sudo apt install timeshift
Command line:
Code:
$ sudo timeshift --list.
$ sudo timeshift --check.
$ sudo timeshift --create.
$ sudo timeshift --restore.
$ sudo timeshift --restore --snapshot '[snapshot]'
$ sudo timeshift --delete --snapshot '[snapshot]'
A summary of options is included below.
List:
--list[-snapshots] List snapshots.
--list-devices List devices.
Backup:
--check Create snapshot if scheduled.
--create Create snapshot (even if not scheduled).
--comments <string> Set snapshotdescription.
--tags {O,B,H,D,W,M} Add tags to snapshot (default:O).
Restore:
--restore Restore snapshot.
--clone Clone current system.
--snapshot <name> Specify snapshot torestore.
--target[-device] <device> Specify targetdevice.
--grub[-device] <device> Specify device forinstalling GRUB2 bootloader.
--skip-grub Skip GRUB2 reinstall.
Delete:
--delete Delete snapshot.
--delete-all Delete all snapshots.
Global:
--snapshot-device <device> Specify backup device(default: config).
--yes Answer YES to all confirmation prompts.
--btrfs Switch to BTRFS mode (default: config).
--rsync Switch to RSYNC mode (default: config).
--debug Show additional debug messages.
--verbose Show rsync output (default).
--quiet Hide rsync output.
--scripted Run in non-interactive mode.
--help Show all options.
Notes:
1) --create will always create a new snapshot
2) --check will create a snapshot only if a scheduled snapshot isdue
3) Use --restore without other options to select optionsinteractively
4) UUID can be specified instead of device name
5) Default values will be loaded from app config if options are notspecified