7z를 사용하여 파이프를 통해 mysql 덤프를 압축하는 방법은 무엇입니까?

7z를 사용하여 파이프를 통해 mysql 덤프를 압축하는 방법은 무엇입니까?

나는 파이프 연산자를 사용하여 7z를 통해 mysqldump 출력을 압축하려고 했습니다.이것질문이지만 그 대답은 7z 대신 xz를 사용합니다). 지금까지 시도한 내용은 다음과 같습니다.

mysqldump -u root -p Linux_Wiki | 7z > backup.sql.7z

그리고:

mysqldump -u root -p Linux_Wiki | 7za > backup.sql.7z

그리고:

mysqldump -u root -p Linux_Wiki | '7za a' > backup.sql.7z

그리고:

mysqldump -u root -p Linux_Wiki | `7za a` > backup.sql.7z

p7zip네 가지 모두 실패했지만 마지막 시도에서 다음과 같은 결과가 나왔기 때문에 설치 했다고 확신합니다 .

Enter password: bash: 7-Zip: command not found
mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect

답변1

비밀번호는 먼저 .my.cnf사용자의 홈 디렉토리에 있는 파일에 다음 형식으로 저장됩니다.

[mysqldump]
password=secret

mysqldump그런 다음 플래그 없이 방법을 사용하여 mysql 데이터베이스를 덤프해야 합니다 -p(이제 파일의 비밀번호를 사용합니다).

mysqldump -u root database | 7z a -si backup.sql.7z
  • 아카이브에 a플래그가 추가되었습니다.7z
  • -si표준 입력(익명 파이프)에서 읽는 것을 나타냅니다.

답변2

일부 사람들은 이러한 관행에 눈살을 찌푸릴 수도 있지만 다음과 같이 명령줄에 비밀번호를 입력할 수 있습니다.

mysqldump -u root -pmyrootpassword database | 7z a -si backup.sql.7z

이는 -p인수 바로 뒤에 와야 합니다.

답변3

7zip 알고리즘이 포함된 파이프라인을 사용하려면 7z 대신 xz 사용을 고려해야 합니다.

xz는 7z와 정확히 동일한 알고리즘을 사용하지만 gzip(또는 bzip2)처럼 사용할 수 있습니다. xz와 7zip은 동일한 작성자가 디자인했습니다.

mysqldump -u root -p Linux_Wiki | xz -9 > backup.sql.xz

7zip의 GUI는 xz를 인식합니다.

관련 정보