태그 보관물: cron

cron

접두사가 붙은 파일까지 자동 DB 백업을위한 cronjob

최신 Linux Mint를 사용하고 있습니다. 데이터베이스 백업을 위해 특별한 cronjob을 만들 수 있는지 궁금합니다.

/etc/cronjob파일에는 다음 코드가 있습니다.

# Minute   Hour   Day of Month       Month          Day of Week        Command
# (0-59)  (0-23)     (1-31)    (1-12 or Jan-Dec)  (0-6 or Sun-Sat)
30        4          *            *                1-6            /home/users/backup.sh

내 안에는 /home/users/backup.sh:

mysqldump -uroot -p MyDatabase > /home/users/backup_MyDB/full_myDB.sql

대신 우리가 가진 날짜에 따라 날짜가 동적으로 추가되는 위치 full_myDB.sql와 같은 것을 원합니다 2014-04-04_full_myDB.sql.

SQL 백업 파일이 일주일이 지난 경우 cronjob에서 자동으로 삭제 하고 싶습니다 .



답변

GNU date(Linux Mint의 기본값)를 사용하면 다음을 수행 할 수 있습니다.

mysqldump -uroot -p MyDatabase >/home/users/backup_MyDB/$(date +%F)_full_myDB.sql

1 주가 지난 파일을 삭제하려면

find /home/users/backup_MyDB -type f -mtime +7 -exec rm {} +

일반적으로 삭제하기 전에 (적어도 스크립트를 테스트 할 때) 삭제하려는 내용을 보는 것이 좋습니다.

find /home/users/backup_MyDB -type f -mtime +7


답변

위의 정보를 사용하여 백업 속도를 늦춘 실제로 큰 테이블 중 하나를 실제로 잘라내는 사소한 업데이트를 하나 더 제공하려고했습니다.

잘하면 이것은 다른 누군가를 돕습니다.

위의 정보를 사용하여 다음 내용으로 mysqlbackup.sh라는 기본 쉘 스크립트를 작성했습니다.

#!/bin/sh
find /data/var/backups/mysql/dumps -type f -mtime +3 -exec rm {} +
mysql -e "truncate table sitename_prod.cache_table"
mysqldump sitename_prod > /data/var/backups/mysql/dumps/$(date +%F)_full_sitename_prod.sql

다음을 실행하십시오 : chmod + x mysqlbackup.sh

나는 또한 이것을 crontab -e에 넣었다.

# MYSQL Dump and retention for 3 days
30 22 * * * bash /root/bin/mysqldump.sh > /dev/null 2>&1


답변

나는 그것이 오래되었다는 것을 알고 있지만 위의 답변을 사용하고 파일 압축 명령을 추가했습니다. 다른 누군가가 이것을 유용하게 사용하기를 바랍니다.

1) 약간의 7-zip을 연구하는 것이 가장 좋은 압축기 인 것 같습니다. Linux 배포판에서 지원하는 경우 apt 설치 관리자를 사용할 수 있습니다.

sudo apt-get install p7zip-full

또는 tar.gz를 더 편안하게 사용할 수 있습니다.

2) 그런 다음 /home/users/backup.sh
내용 을 사용하여 스크립트를 만듭니다 .

#!/bin/sh
find /home/users/backup_MyDB -type f -mtime +7 -exec rm {} +
mysqldump -uroot -p MyDatabase >/home/users/backup_MyDB/$(date +%F)_full_myDB.sql
7z a /home/users/backup_MyDB/$(date +%F)_full_myDB.7z /home/users/backup_MyDB/*.sql
rm -f /home/users/backup_MyDB/*.sql

이 스크립트는 7 일 이상의 파일을 찾아서 삭제 한 다음 SQL 덤프를 생성 한 다음 디렉토리에있는 모든 .sql 파일을 7-zip으로 압축 한 다음 디렉토리에있는 모든 .sql을 삭제합니다 ( BTW, 필요한 경우 이전 답변에서 언급 한 것처럼 덤프 전에 mysql 명령을 선택적으로 추가 할 수 있습니다)

3) 우리는 chmod +x /home/users/backup.sh그렇게 할 수 있도록 실행합니다.

3.1) 스크립트가 의도 한대로 작동하는지 테스트해야합니다

4) 우리는 작업을 프로그래밍 crontab -e

# Minute   Hour   Day of Month       Month          Day of Week        Command
# (0-59)  (0-23)     (1-31)    (1-12 or Jan-Dec)  (0-6 or Sun-Sat)
30        4          *            *                1-6            /home/users/backup.sh >> /dev/null 2>&1

그리고 그게 다야. 매일 오전 4시 30 분 (일요일 제외)에 MySQL 데이터베이스를 백업하고 백업을 압축합니다.


답변

@Graeme의 답변에 추가하려면 cron 작업에서 ‘%’문자를 이스케이프 처리해야 할 수도 있으므로 다음과 같이 보일 수도 있습니다.

 mysqldump -uroot -p MyDatabase >/home/users/backup_MyDB/$(date +\%F)_full_myDB.sql


답변