2009-09-14 14 views
5

Tôi đã điều sau đây:Nén một Mysqldump được SSH'd để máy khác

mysqldump -u xxxx 
      -h localhost 
      --password=xxxxx databasename | 
      ssh [email protected] "dd of=httpdocs/backup`date +'%Y-%m-%d-%H-%M-%S'`.sql" 

... mà SSH là một mysqldump đến một máy từ xa.

Tôi cần phải nén mysqldump trước khi nó được SSH'd vì bãi chứa là 500mb và mức tăng phụ thuộc băng thông của tôi.

Trả lời

10

mysqldump ... | gzip -9 | ssh ...

hoặc

mysqldump ... | bzip2 -9 | ssh ...

hoặc, nếu bạn muốn nó không nén ở đầu bên kia

mysqldump ... | bzip2 -9 | ssh machine "bzip2 -d >..."

mysqldump ... | gzip -9 | ssh machine "gzip -d >..."

7

Bạn có thể thêm cờ -C vào cuộc gọi ssh để tự động nén dữ liệu được truyền.

+0

Điều này thật thú vị, tôi chỉ đang nghĩ đến việc thực hiện một tập tin nén khi đang di chuyển. –

+0

Đó sẽ là một trò đùa của nén, mặc dù. –

+0

@hacker: Bất kỳ lý do đặc biệt nào mà bạn cho rằng việc nén này sẽ không đủ tốt? Chỉ cần bạn thích cờ '-9' cho gzip? – sth

2

Bạn cần phải gọi gzip giữa mysqldump và ssh, như:

mysqldump [mysql options] | gzip | ssh [ssh options] 

Tôi muốn giới thiệu thay đổi đuôi tệp được lưu vào ".sql.gz" là tốt.

+0

sẽ là '.sql.gz' sau đó - đóng gói ngoài cùng ở cuối. –

+0

Tốt bắt, tôi đánh máy rằng trong vô tình. Đã sửa. –

0

Điều này đã được trả lời và chấp nhận, nhưng tôi nghĩ bạn có thể thấy đây là một giải pháp thay thế thú vị.

Ứng dụng mã nguồn mở của Percona xtrabackup sẽ thực hiện các bản sao lưu được nén (TAR) ngay lập tức - cùng với nhiều điều thú vị khác.

Tôi không thể tìm thấy một neo trên trang, nhưng cuộn xuống "Nén bản sao lưu".

Các vấn đề liên quan