Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tal7aouy/backup
Flexible and secure way to backup server data and databases, with features including encryption, logging, and customizable backup sources and destinations.
https://github.com/tal7aouy/backup
backup database sever
Last synced: 10 days ago
JSON representation
Flexible and secure way to backup server data and databases, with features including encryption, logging, and customizable backup sources and destinations.
- Host: GitHub
- URL: https://github.com/tal7aouy/backup
- Owner: tal7aouy
- License: mit
- Created: 2024-04-10T03:22:49.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-04-16T17:59:05.000Z (7 months ago)
- Last Synced: 2024-04-17T16:45:10.164Z (7 months ago)
- Topics: backup, database, sever
- Language: Shell
- Homepage:
- Size: 8.79 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Backup
This Bash script provides a robust solution for backing up server directories and a MySQL database. It reads configuration settings from an external file (`backup.conf`), performs the backups, logs the process, and securely encrypts the backup files.
## Prerequisites
Before you begin, ensure you have the following installed and configured on your system:
- **Bash Shell**: Available on Linux and UNIX-like operating systems.
- **MySQL Server**: Needed for database backups.
- **OpenSSL**: Required for encrypting the backup files.
- **tar**: Utility for archiving directories.
- **Access Permissions**: Ensure the script has the necessary permissions to access the directories and databases you intend to back up.## Configuration
Set up your backup configuration by editing the `backup.conf` file. Adjust the file paths, database credentials, and other settings according to your specific needs.
### Configuration File Template
```ini
# Database settings
DB_USER=root
DB_PASSWORD=password
DB_NAME=my_database# Backup settings
ENCRYPTION_PASSWORD=my_secure_password
BACKUP_ROOT_DIR=/path/to/backup
SOURCE_DIRS=/home/user/data,/home/user/docs# Log file location
LOG_FILE=/path/to/backup.log
```## Installation
1. **Download the Script**: Clone this repository or directly download the `backup.sh` and `backup.conf` files to your server.
2. **Set File Permissions**: Secure the script and configuration file:
```bash
chmod 700 backup.sh
chmod 600 backup.conf
```3. **Configure the `backup.conf` File**: Ensure the configuration file is placed either in the same directory as `backup.sh` or specify its location in the script.
## Usage
Execute the script with the following command:
```bash
./backup.sh
```### Automate with Cron
To automate the backup process, add a cron job:
```bash
crontab -e
```Insert the following line to run the backup daily at 2 AM:
```cron
0 2 * * * /path/to/backup.sh > /dev/null 2>&1
```## Security Considerations
- **Protect Sensitive Data**: Ensure the `backup.conf` is kept secure, as it contains sensitive information.
- **Restrict Access**: Limit access to the script, configuration file, and backup data to trusted users only.
- **Regular Testing**: Frequently test the backup and restore process to confirm the integrity and recoverability of the data.## Monitoring and Logs
Monitor the backup process through the log file specified in `backup.conf`. Check this file regularly for any errors or confirmations of successful backups:
```bash
cat /path/to/backup.log
```## Support
For any issues, suggestions, or contributions, please contact the repository maintainer or submit an issue/pull request to the project's GitHub page.