có thể tạo "Ảnh chụp nhanh" của một số thư mục hàng ngày không
được lưu trên cùng một máy chủ, nhưng trong một thư mục khác.
...
để bảo vệ khỏi mọi hư hỏng do tập lệnh độc hại / hack, v.v.
Vâng, bất kỳ một trong những nhiều công cụ phần mềm kiểm soát sửa đổi Điều đó sẽ làm chính xác điều đó.
Tôi sử dụng Mercurial ("hg"), thường với giao diện gui Rùa xinh xắn.
Trên nhiều máy chủ của tôi, tồn tại một thư mục (*), có lẽ là "/ var / www /", chứa mọi thứ tôi muốn sao lưu - cài đặt tệp, mẫu, tập lệnh cgi-bin phía máy chủ, trình duyệt tùy chỉnh tập lệnh bên .js, nội dung .html, v.v.
(Mọi thứ khác trên máy là hệ điều hành nồi hơi và công cụ ứng dụng.
Nếu thứ đó bị hỏng, có lẽ tôi sẽ xóa nó và cài đặt phiên bản mới nhất của nó,
thay vì cố gắng trở lại phiên bản cũ, lỗi thời mà tôi đang sử dụng).
Khi tôi thiết lập mọi thứ lần đầu tiên, tôi cd vào thư mục đó và thực hiện cài đặt một lần
hg init
hg add
hg commit -u dc -m "initial setup"
Dòng "init" tạo thư mục ".hg /", một ngày nào đó, sẽ lưu các ảnh chụp nhanh được nén.
(do đó tên của một hướng dẫn Mercurial phổ biến, http://hginit.com/ ).
Dòng "thêm" và dòng "cam kết",
theo mặc định,
quét mọi tập tin mọi tập tin trong thư mục đó, bất kể được lồng sâu đến mức nào trong các thư mục phụ,
và đặt một bản sao (đã nén) vào thư mục ".hg /" đó.
Khi tôi nghi ngờ thiệt hại hoặc thay đổi khác đối với các tệp đang hoạt động (và giả sử thư mục ".hg", chứa tất cả các ảnh chụp nhanh, không bị hư hại), tôi gõ
hg status
Nó cho tôi biết chính xác các tập tin đã thay đổi, bất kể được lồng sâu vào một số thư mục con, sau đó tôi gõ
hg diff
cho tôi biết chính xác những gì đã thay đổi trong mỗi tập tin.
Nếu tôi không thích những gì tôi thấy - đó là sửa đổi độc hại,
hay thông thường hơn, đó là những chỉnh sửa ngớ ngẩn của riêng tôi mà bây giờ tôi rất hối hận khi thực hiện, tôi gõ
hg revert --all
để hoàn nguyên tất cả các thay đổi trở lại cam kết gần đây nhất.
Nếu tôi làm như những gì tôi thấy - tôi đã điều chỉnh một cái gì đó thực sự làm cho nó tốt hơn - tôi gõ một cái gì đó như
hg add
hg commit -u dc -m "tweaked .htaccess so we now have Clean URLs."
với một bình luận hy vọng mô tả lý do tại sao tôi thực hiện những thay đổi này.
(Có nhiều cách để hoàn nguyên một số của các tập tin,
và chỉ cam kết một số của các tệp và thậm chí cả các cách để chỉ cam kết một số trong số nhiều thay đổi được thực hiện cho một tệp - xem tài liệu để biết chi tiết).
Có lẽ bạn muốn có một công việc định kỳ mà hàng ngày làm một cái gì đó như
hg add
hg commit -u mr_backup -m "cron automated snapshot of the server."
Ảnh chụp nhanh của mọi phiên bản đã từng được cam kết sẽ nằm trong thư mục ".hg /".
Có lệnh "hg update" để hoàn nguyên về bất kỳ phiên bản đã cam kết nào.
Có lệnh "hg diff -r 1: 2" để xem chính xác điều gì đã thay đổi giữa lần xác nhận đầu tiên và lần xác nhận thứ hai.
tình huống phức tạp hơn
(*) Thường chỉ có một thư mục tôi muốn sao lưu ("/ var / www /").
Tuy nhiên, đôi khi tôi có một tình huống phức tạp hơn - các tệp tôi muốn sao lưu nằm rải rác trong một loạt các thư mục khác nhau,
và thư mục chung duy nhất giữa chúng là thư mục gốc "/",
và tôi không muốn đặt kho lưu trữ ".hg /" vào thư mục gốc "/.hg/".
Có lẽ có một cách tốt hơn để xử lý nó, nhưng những gì tôi đang làm bây giờ là:
- Tôi tạo một người dùng đặc biệt có tên "MrBackup" có quyền chỉ đọc cho tất cả các tệp tôi muốn sao lưu.
- Tôi thiết lập mọi thứ để mọi thư mục tôi muốn sao lưu xuất hiện dưới dạng thư mục con của / home / mr_backup. Tôi hiện có một hỗn hợp ngẫu nhiên gồm:
- Một số tệp thực sự nằm trong thư mục nhà của MrBackup và sau đó, nơi khác mà họ "cần" có liên kết mềm với chúng.
- Một số tệp có liên kết cứng đến cả hai nơi - nơi họ "cần" và cũng ở đâu đó trong thư mục nhà của MrBackup.
- Tập lệnh cron sao chép định kỳ một số tệp từ vị trí "trực tiếp" vào thư mục sao lưu trong thư mục nhà của MrBackup, có thể bỏ cơ sở dữ liệu SQL từ máy chủ khác vào tệp kết xuất trong thư mục chính của MrBackup và cũng tự sao lưu tập lệnh cron ( "crontab -l & gt; /home/mr_backup/backup/crontab.txt").
- Thường thì tôi muốn sao lưu hầu hết mọi thứ trong thư mục P, ngoại trừ thư mục con "cache /" mà tôi không cần sao lưu, vì nó sẽ được tự động phục hồi nếu cần. Tôi sử dụng ".hgignore" để loại trừ thư mục con bộ đệm.
- Sau đó, tôi sử dụng Mercurial, như trên.
- Khi các tệp được tạo bởi tập lệnh cron trông không ổn, sau khi tôi hoàn nguyên, tôi cần thực hiện thêm một số bước để bằng cách nào đó đẩy "phiên bản tốt" trở lại vị trí "sống".
p.:
Trên một máy ở một thành phố khác với máy chủ của tôi, tôi thỉnh thoảng kích hoạt bàn làm việc của TortoiseHg và nhấp vào nút nhỏ, đằng sau hậu trường, chạy
hg pull
(và hỏi tôi mật khẩu của Mr Backup)
để có được một bản sao lưu ngoài trang web của tất cả mọi thứ đã được cam kết với kho lưu trữ.
Thay vì thực hiện các chỉnh sửa trực tiếp với máy chủ sản xuất, tốt hơn là thực hiện các chỉnh sửa trên một số máy khác, sau đó cam kết chúng và
hg push
họ đến máy chủ sản xuất.
Thư mục ".hg /" tiếp tục phát triển - rất chậm, vì nó chỉ lưu các tệp thay đổi từ một cam kết tiếp theo và thậm chí những thay đổi tương đối nhỏ đó được nén trước khi chúng được lưu trữ.
Có lẽ có một cách tốt hơn để đối phó với sự tăng trưởng chậm này, nhưng những gì tôi hiện đang làm là:
Sau khi tôi "hg cam kết" phiên bản hiện tại và sau đó "hg kéo" vào máy sao lưu ngoài trang web của tôi,
mỗi năm một lần tôi xóa thư mục ".hg /" của máy chủ và sử dụng "hg init" để tạo thư mục mới.
(Phiên bản cuối cùng của kho lưu trữ sao lưu ngoài trang web 2014 Nên giống hệt với phiên bản đầu tiên của kho lưu trữ sao lưu ngoài trang web 2015).