L'importance de la sauvegarde de fichiers va de soi. La sauvegarde régulière est une bonne habitude, qu'il s'agisse de fichiers de sites Web ou de photos, vidéos de la vie quotidienne, etc. Sinon, lorsque les données seront perdues, vous ressentirez le désespoir de ne pas pouvoir les récupérer. L'auteur l'a personnellement vécu à plusieurs reprises. Le plus grave a été lorsque toutes les données de mon blog personnel ont été perdues pendant plus de 7 mois. J'avais vraiment envie de pleurer sans larmes.
Aujourd'hui, je vais vous expliquer comment écrire un script pour sauvegarder les répertoires de sites Web et les fichiers de base de données côté serveur. Tout d'abord, vous devez ajouter quelques connaissances :
commande tar, compression et packaging de fichiers
commande rechercher, rechercher des fichiers
bzip2, compression de fichiers
Afin d'économiser de l'espace, nous compressons et empaquetons souvent les fichiers de répertoire. La commande bzip2 peut compresser des fichiers, mais elle ne peut pas compresser des répertoires. Vous pouvez utiliser la commande tar pour compresser et empaqueter des répertoires.
Étant donné que le fichier de base de données est un fichier SQL distinct, vous pouvez utiliser la commande bzip2 pour le compresser.
mysqldump -u用户名 -p密码 --all-databases | bzip2 > 备份目录/文件名
Les fichiers du site Web doivent être compressés à l'aide de la commande tar.
tar -jcpf 备份目录/文件名 需备份的目录
Bien que nous effectuions des sauvegardes tous les jours, nous souhaitons uniquement sauvegarder les enregistrements de sauvegarde des sept derniers jours, et les données de sauvegarde d'il y a 7 jours seront automatiquement supprimées. Ici, nous devons utiliser la commande find pour rechercher le fichier de sauvegarde d'il y a 7 jours, puis le supprimer.
find 备份目录 -mtime +7 -type f -exec rm -f {} \;
Commençons à écrire formellement le script shell. Tout d’abord, nous devons définir le répertoire de sauvegarde. Si le répertoire de sauvegarde n’existe pas, nous devons d’abord créer le répertoire.
WWW_DIR=/home/wwwroot BAK_DIR=/root/bak if [ ! -d $BAK_DIR ];then mkdir $BAK_DIR fi
L'étape suivante consiste à sauvegarder le répertoire du site Web et les fichiers de la base de données
tar -jcpf $BAK_DIR/www_$(date +%Y%m%d).tar.bz2 $WWW_DIR 2>/dev/null mysqldump -uroot -p123456 --all-databases | bzip2 > $BAK_DIR/all_database_$(date +%Y%m%d).sql
Enfin, supprimez simplement les données de sauvegarde il y a sept jours
find $BAK_DIR -type f -mtime +7 -exec rm -f {} \;
Le code complet est publié ci-dessous :
#!/bin/bash # 备份数据库文件及网站文件 WWW_DIR=/home/wwwroot BAK_DIR=/root/bak if [ ! -d $BAK_DIR ];then mkdir $BAK_DIR fi # 备份网站文件及数据库文件 tar -jcpf $BAK_DIR/www_$(date +%Y%m%d).tar.bz2 $WWW_DIR 2>/dev/null mysqldump -uroot -pGuiyuan#520@1314 --all-databases | bzip2 > $BAK_DIR/all_database_$(date +%Y%m%d).sql # 删除7天前的备份数据 find $BAK_DIR -type f -mtime +7 -exec rm -f {} \;
Enfin, j'espère que tout le monde pourra développer l'habitude de sauvegarder. En plus des sauvegardes quotidiennes sur le serveur, il est également recommandé de copier chaque semaine une copie des données du serveur vers le disque local pour garantir que les données sont infaillibles.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!