백업 스크립트를 만드는 데 완벽하게 작동하는 쉘/bash가 있습니다. 문제는 스크립트 실행에 문제를 일으키는 큰 파일이 있다는 것입니다. 스크립트는 q tar.gz
형식으로 파일을 압축하고 이를 수행하지만 6GB 이상으로 들어오거나 스크립트가 파일을 계속 압축하지만 다음 줄로 들어가고 백업이 실패하면 서버는 set_time_limit;
PHP에서 동일해야 합니다. 내가 사용하는 쉘/bash를 호출 set_time_limit (0);
하고 매우 잘 작동하는 php 파일, 쉘/bash에도 뭔가가 있습니까?
스크립트:
MYSQLDUMP="$(which mysqldump)"
$MYSQLDUMP -u $DBUSER -h $DBHOST -p$DBPASS $DBNAME | gzip > $TIMESTAMP.sql.gz
ssh $USER_SSH@$HOST_SSH "tar -zcf - $HOME" > $TIMESTAMP.backup.tar.gz
tar -zcf $TIMESTAMP.tar.gz $TIMESTAMP.backup.tar.gz $TIMESTAMP.sql.gz
SUCCESS=$?
rm $TIMESTAMP.sql.gz
rm $TIMESTAMP.backup.tar.gz
변수는 필요하지 않다고 생각해서 게시하지 않았습니다.
tar를 마치기 전에 마지막 줄이 있는 2개의 파일을 제거합니다. 파일이 약 6GB 또는 7GB보다 작으면 이런 일이 발생하지 않습니다.
답변1
먼저 PHP 스크립트를 호출하는 방법을 아는 것이 편리할 것입니다. 둘째, php 스크립트가 mysql 덤프를 수행하는 대신 bash/shell 스크립트가 이를 수행하도록 할 수 있으며 php 스크립트가 수행하는 모든 작업은 이를 호출하는 것뿐입니다.
이제 PHP 스크립트를 mysql에 연결했으므로 현재 스크립트를 최소한으로 수정하여 무엇을 할 수 있습니까? PHP 스크립트가 bash 스크립트를 기다리게 하는 대신. PHP가 bash 스크립트를 호출하도록 하고 이 방법으로 잊어버리면 시간이 얼마나 걸릴지 걱정할 필요가 없습니다.
Bash 스크립트에서 압축 완료 후 성공 또는 실패를 나타내는 mysql의 행을 업데이트하도록 하고, Bash 스크립트에서 덤프를 수행하도록 하면 PHP 스크립트에서 IE를 수행하는 것보다 더 안전할 것입니다. 웹을 통해 DB에 접근할 수 없으며 PHP용 SSH용 개인 키를 생성하는 것이 좋습니다. 그런 다음 나중에 다른 스크립트를 사용하여 PHP 검사를 수행한 다음 DB에서 결과를 확인하여 성공했음을 시각적으로 보고하는 등의 다른 작업을 수행할 수 있습니다.
몇 가지 다른 스크립트로 PHP를 사용하는 것부터 더 많은 작업을 수행하기 위해 bash를 사용하는 것, 결과에 대해 페이지를 동적으로 업데이트하는 데 도움이 되도록 javascript와 같은 다른 언어를 포함하는 것까지 이를 해결할 수 있는 다양한 방법이 있습니다. 새로고침 등등