>  기사  >  운영 및 유지보수  >  쉘 프로그래밍 실습: 웹사이트 파일 및 데이터베이스 파일 백업

쉘 프로그래밍 실습: 웹사이트 파일 및 데이터베이스 파일 백업

齐天大圣
齐天大圣원래의
2020-09-20 09:36:051365검색

파일 백업의 중요성은 자명합니다. 웹사이트 파일이든 일상 사진, 동영상이든 정기적인 백업은 좋은 습관입니다. 그렇지 않으면 데이터가 손실되면 데이터를 복구할 수 없다는 절망감을 경험하게 됩니다. 글쓴이도 직접 겪은 일인데, 가장 심각했던 건 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.