Backup and Versioning with cp
Command
TLDR: The cp
command in Linux supports versioning through options like --backup
and --suffix
, allowing users to create backups with incremental numbers or custom suffixes.
Built-in Versioning Capabilities
The cp
command provides two main options for file versioning:
--backup
: Creates a backup of the destination file before overwriting.--suffix
: Defines a custom suffix for the backup file.
Basic Backup
To create a simple backup:
cp --backup=numbered /path/to/source/file /path/to/destination/
This command generates a backup with a default tilde (~) suffix and an incrementing number.
Custom Suffix Backup
For more descriptive backups:
cp --backup=numbered --suffix=.bak /path/to/source/file /path/to/destination/
This command creates backups with a .bak
suffix and an incrementing number.
Practical Example: Backing Up SSH Configuration
To manage the SSH configuration file /etc/ssh/sshd_config
:
-
Create a numbered backup:
cp --backup=numbered /etc/ssh/sshd_config /data/backup/
This produces backups such as
sshd_config.~1~
,sshd_config.~2~
, etc. -
Create a numbered backup with a custom suffix:
cp --backup=numbered --suffix=.bak /etc/ssh/sshd_config /data/backup/
This results in backups like
sshd_config.bak.1
,sshd_config.bak.2
, etc.
Benefits
- Keeps a history of file changes
- Prevents accidental overwriting of important files
- Provides a simple versioning system without complex tools
Ref: sysxplore - X