파일 백업의 중요성은 자명합니다. 웹사이트 파일이든 일상 사진, 동영상이든 정기적인 백업은 좋은 습관입니다. 그렇지 않으면 데이터가 손실되면 데이터를 복구할 수 없다는 절망감을 경험하게 됩니다. 글쓴이도 직접 겪은 일인데, 가장 심각했던 건 7개월 넘게 개인 블로그에 있던 자료가 다 없어졌을 때인데, 정말 눈물 없이 울고 싶은 심정이었다.
오늘은 서버측에서 웹사이트 디렉토리와 데이터베이스 파일을 백업하는 스크립트를 작성하는 방법을 알려드리겠습니다. 우선 몇 가지 지식을 추가해야 합니다.
tar 명령, 파일 압축 및 패키징
find 명령, 파일 찾기
bzip2, 파일 압축
공간을 절약하기 위해 우리는 종종 디렉토리 파일을 압축합니다. 압축 및 패키징 작업을 수행합니다. bzip2 명령은 파일을 압축할 수 있지만 디렉터리는 압축할 수 없습니다. tar 명령을 사용하여 디렉터리를 압축하고 패키지할 수 있습니다.
데이터베이스 파일은 별도의 sql 파일이므로 bzip2 명령어를 이용하여 압축하시면 됩니다.
mysqldump -u用户名 -p密码 --all-databases | bzip2 > 备份目录/文件名
웹사이트 파일은 tar 명령을 사용하여 압축해야 합니다.
tar -jcpf 备份目录/文件名 需备份的目录
매일 백업을 진행하지만 최근 7일간의 백업 기록만 저장하고 싶고, 7일 전 백업 데이터는 자동으로 삭제됩니다. 여기에서는 find 명령을 사용하여 7일 전의 백업 파일을 찾은 다음 삭제해야 합니다.
find 备份目录 -mtime +7 -type f -exec rm -f {} \;
정식으로 쉘 스크립트 작성을 시작해 보겠습니다. 먼저 백업 디렉터리를 정의해야 합니다. 백업 디렉터리가 없으면 먼저 디렉터리를 생성해야 합니다.
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 -p123456 --all-databases | bzip2 > $BAK_DIR/all_database_$(date +%Y%m%d).sql
마지막으로 7일 전 백업 데이터를 삭제하세요
find $BAK_DIR -type f -mtime +7 -exec rm -f {} \;
전체 코드는 아래에 게시되어 있습니다.
#!/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 {} \;
마지막으로 모두가 Backup을 개발할 수 있기를 바랍니다. 버릇. 서버에 매일 백업하는 것 외에도 매주 서버에서 로컬 디스크로 데이터 복사본을 복사하여 데이터가 완벽한지 확인하는 것이 좋습니다.
위 내용은 쉘 프로그래밍 실습: 웹사이트 파일 및 데이터베이스 파일 백업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!