MySQL 데이터베이스를 덤프하고 파일을 압축하는 스크립트가 있습니다. 내가 원하는 것은 사용자 이름, 비밀번호 및 데이터베이스 이름을 변경할 수 있는 또 다른 (편집) 파일을 갖는 것입니다. 그런 다음 해당 파일을 스크립트에 연결하십시오.
다른 파일에서는 예를 들어 일부 콘텐츠를 원합니다.
username = "username"
password = "password"
database = c2duo_db
그런 다음 스크립트 이름에MySQL 백업.sh일부는 파일에서 사용자 이름, 비밀번호 및 데이터베이스를 가져옵니다.
#!/bin/sh
mysqldump -u"username" -p"password" --opt c2duo_db > /home/sh/c2duo_db-`date +%d%m%Y`.sql
cd /home/sh
tar -zcvf c2duo_db-`date +%d%m%Y`.tar.gz *.sql
답변1
source
다른 파일의 내용을 현재 셸 환경(귀하의 스크립트의 경우)으로 가져와서 실행하는 다음 명령을 사용하면 쉽게 이 작업을 수행 할 수 있습니다 .
존재하다 db.conf
:
username="username"
password="password"
database="database"
스크립트에서:
#!/bin/sh
source /path/to/db.conf
cd /home/sh
dumpfile_name=$database-$(date +%d%m%Y).sql
mysqldump -u"$username" -p"$password" --opt "$database" > $dumpfile_name
gzip $dumpfile_name
노트:
=
쉘 변수를 할당할 때 할당 연산자 뒤에 공백을 추가하지 마십시오!- 귀하의 코드를 정리하기 위해 몇 가지 작업을 수행했습니다. 나는 당신처럼 단일 tar 파일에 새 덤프를 추가하지 않았습니다. 단일 파일을 압축하는 방법을 보여 드리겠습니다. 하나의 아카이브에 모두 포함되도록 패키징하려는 경우에도 그렇게 할 수 있지만 별도의 압축된 덤프 파일이 매우 유용하다고 생각합니다.
- 현재 디렉터리이므로 출력 파일의 경로를 지정할 필요가 없도록
cd
명령 앞에 작업을 이동했습니다 .mysqldump
중복된 코드를 저장하면 됩니다.
편집하다:이 단계가 완료되었음에도 불구하고 이는 제게는 시기상조인 해결책처럼 보입니다. 매개변수를 사용하여 값을 전달하는 방법에 관심이 있을 수 있습니다. 예를 들어 위 스크립트에서 하드코드된 구성 파일 경로를 다음으로 바꿀 수 있습니다.
#!/bin/sh
source "$1"
cd /home/sh
[...] # rest of script as above
그러면 다음과 같이 실행할 수 있습니다 ./mysqlbackup.sh /path/to/db.conf
. 한 단계 더 나아가 하나의 스크립트에 모두 작성하고 세 가지 값을 모두 매개변수로 제공할 수도 있습니다.
#!/bin/sh
username="$1"
password="$2"
database="$3"
cd /home/sh
[...] # rest of script as above
...그렇게 부르죠 ./mysqlbackup.sh username password database
.
답변2
첫 번째 파일을 다음으로 변경할 수 있습니다.
s/username/joe/
s/password/secret/
s/database/c2duo_db/g
db.sed로 저장하고 사용
sed -f db.sed mysqlbackup.sh > joeSqlbackup.sh
다양한 사용자/비밀번호 및 데이터베이스에 대해 다양한 sed 스크립트를 생성합니다.