2009-03-20 42 views
8

Tôi có một tệp, nội dung của nó giống hệt nhau. Nó được chuyển vào gzip và chỉ có dạng nén được lưu trữ. Tôi muốn có thể tạo lại mã zip và chỉ cập nhật bản sao của tôi nếu chúng khác nhau. Vì nó là các công cụ khác biệt (diff, xdelta, subversion), hãy xem các tệp đã thay đổi.Làm cách nào để tạo một gzip giống hệt nhau của cùng một tệp?

Tiền đề, tôi đang lưu trữ một mysqldump của một cơ sở dữ liệu quan trọng vào một kho lưu trữ lật đổ. Đó là ý định của tôi rằng một cronjob định kỳ đổ db, gzip nó, và cam kết các tập tin. Hiện tại, mỗi lần tệp được bán phá giá và sau đó gzipped nó được coi là khác nhau. Tôi không muốn có số sửa đổi của tôi không cần thiết tăng mỗi 15m.

Tôi nhận ra rằng tôi có thể kết xuất tệp dưới dạng văn bản thuần túy, nhưng tôi không thích vì nó khá lớn.

Lệnh Tôi hiện đang sử dụng để tạo ra các bãi là:

mysqldump $DB --skip-extended-insert | sed '$d' | gzip -n > $REPO/$DB.sql.gz 

Các -n chỉ thị gzip để loại bỏ các thông tin filename/timestamp. Các sed '$d' loại bỏ dòng cuối cùng của tập tin nơi mysqldump đặt một dấu thời gian.

Tại thời điểm này, tôi có thể sẽ hoàn nguyên để lưu trữ nó theo kiểu văn bản đơn giản, nhưng tôi đã tò mò về loại giải pháp có.

Đã giải quyết, Mr. Bright was correct, tôi đã nhầm lẫn đã sử dụng vốn N khi đối số chính xác là chữ thường.

Trả lời

12

-N chỉ dẫn gzip xóa thông tin tên tệp/dấu thời gian.

Thực ra, điều đó hoàn toàn ngược lại. -n là điều khiến nó quên tên tập tin ban đầu và dấu thời gian.

+0

Luôn có điều gì đó ngu ngốc ngu ngốc. Thở dài. Cảm ơn bạn đã chỉ ra sai lầm ngớ ngẩn. – Danny

3

Tôi nghĩ gzip sẽ giữ nguyên ngày và dấu thời gian ban đầu trên (các) tệp sẽ khiến cho tệp đó tạo ra một tệp lưu trữ khác.

-N --name 
      When compressing, always save the original file 
      name and time stamp; this is the default. When 
      decompressing, restore the original file name and 
      time stamp if present. This option is useful on 
      systems which have a limit on file name length or 
      when the time stamp has been lost after a file 
      transfer. 
1

Nhưng watchout: hai gzips được thực hiện tại các thời điểm khác nhau của cùng một tệp không thay đổi khác nhau. Điều này là do gzip tự nó được định thời gian với ngày tạo gzip - điều này được ghi vào tiêu đề của tệp gzip. Vì vậy, các gzips dường như khác nhau có thể chứa cùng một nội dung chính xác.

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