Đây là lệnh safecat có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình giả lập trực tuyến MAC OS
CHƯƠNG TRÌNH:
TÊN
safecat - ghi dữ liệu vào tệp một cách an toàn
SYNOPSIS
con mèo an toàn tạm thời định mệnh
GIỚI THIỆU
con mèo an toàn là một chương trình thực hiện thư mục thuật toán để
bản sao tiêu chuẩn một cách an toàn đến một tệp trong một thư mục được chỉ định. Với con mèo an toàn, người dùng được cung cấp
hai đảm bảo. Đầu tiên, nếu con mèo an toàn trả về trạng thái thoát thành công, khi đó tất cả dữ liệu là
đảm bảo được lưu trong thư mục đích. Thứ hai, nếu một tệp tồn tại trong
thư mục đích, được đặt ở đó bởi con mèo an toàn, thì tệp được đảm bảo là
hoàn thành.
Khi lưu dữ liệu với con mèo an toàn, người dùng chỉ định một thư mục đích, nhưng không chỉ định một tệp
Tên. Tên tệp được chọn bởi con mèo an toàn để đảm bảo rằng không có xung đột tên tệp nào xảy ra,
ngay cả khi nhiều con mèo an toàn các quy trình và các chương trình khác thực hiện thư mục thuật toán là
ghi đồng thời vào thư mục. Nếu các tên tệp cụ thể được mong muốn, thì
người dùng nên đổi tên tệp sau con mèo an toàn hoàn thành. Nói chung, khi lưu trữ dữ liệu với
con mèo an toàn, một quy trình riêng lẻ sẽ xử lý việc đặt tên, thu thập và xóa những
các tập tin. Ví dụ về quy trình như vậy là daemon, công việc cron và trình đọc thư.
ĐỘ TIN CẬY CÁC VẤN ĐỀ
Máy có thể gặp sự cố khi dữ liệu đang được ghi vào đĩa. Đối với nhiều chương trình, bao gồm
nhiều đại lý gửi thư, điều này có nghĩa là dữ liệu sẽ bị cắt ngắn một cách âm thầm. Sử dụng
Giáo sư Bernstein's thư mục thuật toán, mọi tệp được đảm bảo hoàn chỉnh hoặc không tồn tại.
Nhiều người hoặc nhiều chương trình có thể ghi dữ liệu vào một thư mục "ống đệm" chung. Hệ thống như ừm-
thư lưu trữ các tệp bằng cách sử dụng tên số trong một thư mục. Việc ghi cẩn thận vào tệp có thể
dẫn đến va chạm, trong đó một lần viết thành công và bài viết kia dường như thành công nhưng
không thành công. Các chiến lược phổ biến để giải quyết vấn đề này liên quan đến việc tạo các tệp khóa hoặc các
đồng bộ hóa các cơ chế, nhưng các cơ chế như vậy có thể bị thất bại. Bất cứ ai có
đã xóa $ HOME / .netscape / lock để bắt đầu netscape có thể chứng thực điều này. Các thư mục
thuật toán miễn nhiễm với vấn đề này vì nó không sử dụng khóa nào cả.
CÁC THƯ VIỆN TIẾNG VIỆT
Như mô tả trong thư mục(5) con mèo an toàn áp dụng thư mục thuật toán bằng cách ghi dữ liệu trong sáu
các bước. Đầu tiên, nó stat () s hai thư mục tạm thời và định mệnhvà thoát trừ khi cả hai
thư mục tồn tại và có thể ghi. Thứ hai, nó stat () s tên tempdir /thời gian.pid.host,
Ở đâu thời gian là số giây kể từ đầu năm 1970 GMT, pid là chương trình
ID quy trình và chủ nhà là tên máy chủ. Thứ ba, nếu stat () trả lại bất cứ thứ gì khác ngoài
ENOENT, chương trình sẽ ngủ trong hai giây, các bản cập nhật thời gianvà thử stat () một lần nữa, một
số lần có hạn. Thứ tư, chương trình tạo ra tempdir /thời gian.pid.host. Thứ năm,
chương trình NFS-ghi tin nhắn vào tệp. Thứ sáu, chương trình liên kết ()là tập tin cho
destdir /thời gian.pid.host. Ngay lúc đó, dữ liệu đã được ghi thành công.
Ngoài ra, con mèo an toàn bắt đầu hẹn giờ 24 giờ trước khi tạo tempdir /thời gian.pid.hostvà
hủy ghi nếu bộ đếm thời gian hết hạn. Khi có lỗi, hết thời gian chờ hoặc hoàn thành bình thường, con mèo an toàn
cố gắng hủy liên kết () tempdir /thời gian.pid.host.
EXIT TÌNH TRẠNG
Trạng thái thoát 0 (thành công) ngụ ý rằng tất cả dữ liệu đã được cam kết an toàn vào đĩa. MỘT
trạng thái thoát khác XNUMX nên được coi là thất bại, mặc dù có một bên ngoài
cơ hội đó con mèo an toàn đã ghi dữ liệu thành công, nhưng không nghĩ như vậy.
Lưu ý một lần nữa rằng nếu một tệp xuất hiện trong thư mục đích, thì nó được đảm bảo
được hoàn chỉnh.
If con mèo an toàn hoàn thành thành công, sau đó nó sẽ in tên của tệp mới tạo
(không có đường dẫn của nó) đến đầu ra tiêu chuẩn.
ĐỀ XUẤT ỨNG DỤNG
Sử dụng thú vị cho con mèo an toàn rất nhiều, rõ ràng, nhưng một từ có thể gợi ý những gì
họ đang.
Nếu bạn chạy Linux và sử dụng qmail thay vì sendmail, bạn nên cân nhắc chuyển đổi
hộp thư đến thư mục cho độ tin cậy vượt trội của nó. Nếu thư mục chính của bạn được gắn kết NFS,
qmail buộc bạn phải sử dụng thư mục.
Nếu bạn viết các ứng dụng CGI để thu thập dữ liệu qua World Wide Web, bạn có thể thấy
con mèo an toàn có ích. Các ứng dụng web gặp phải hai vấn đề lớn. Hiệu suất của họ
mắc phải mọi tình trạng ngừng trệ hoặc tắc nghẽn trên internet; họ không đủ khả năng để giới thiệu
vấn đề hiệu suất của riêng họ. Ngoài ra, các ứng dụng web KHÔNG BAO GIỜ nên để
máy chủ và cơ sở dữ liệu ở trạng thái không nhất quán. Điều này có thể xảy ra, tuy nhiên, nếu các tập lệnh CGI
trực tiếp đóng băng một số cơ sở dữ liệu - đặc biệt nếu cơ sở dữ liệu bị quá tải hoặc chậm. Gì
xảy ra khi người dùng cảm thấy nhàm chán và nhấp vào "Dừng" hoặc "Quay lại"? Có thể hoạt động cơ sở dữ liệu
hoàn thành. Có thể tập lệnh CGI bị khai tử, khiến DB ở trạng thái không nhất quán.
Hãy xem xét chiến lược sau đây. Làm cho tập lệnh CGI của bạn kết xuất yêu cầu của nó vào một cuộn
sử dụng thư mục con mèo an toàn. Trả lại ngay biên lai cho trình duyệt. Bây giờ là trình duyệt
có sự đảm bảo hoàn toàn rằng họ sẽ nhận được nội dung gửi và hiệu suất được nhận thức
ứng dụng web của bạn là tối ưu.
Trong khi đó, một daemon bộ đệm thông báo yêu cầu mới, lấy nó và cập nhật
cơ sở dữ liệu. Các trình duyệt có thể được thông báo rằng yêu cầu của họ sẽ được thực hiện trong X phút.
Kết quả là hiệu suất tối ưu mặc dù mạng internet thất thường. Ngoài ra, người dùng có thể
được cung cấp độ tin cậy gần 100%.
VÍ DỤ
Để thuyết phục sendmail sử dụng thư mục để gửi tin nhắn, hãy thêm dòng sau vào
. tệp đơn giản:
| SAFECAT TRANG CHỦ / Maildir / tmp TRANG CHỦ / Maildir / mới || ra 75 #TÊN TÀI KHOẢN
Ở đâu AN TOÀN là con đường hoàn chỉnh của con mèo an toàn chương trình TRANG CHỦ là con đường hoàn chỉnh để
thư mục chính của bạn và USERNAME là tên đăng nhập của bạn. Thực hiện thay đổi này có khả năng trả tiền
tắt; nhiều cơ sở và công ty gắn các thư mục tại nhà của người dùng với NFS. Sử dụng thư mục đến
gửi đến thư mục hộp thư đến của bạn giúp đảm bảo rằng thư của bạn sẽ không bị mất do một số NFS
lỗi. Tất nhiên, nếu bạn là Quản trị viên hệ thống, bạn nên cân nhắc chuyển sang
qmail.
Để chạy một chương trình và bắt đầu ra của nó một cách an toàn vào một thư mục nào đó, bạn có thể sử dụng một trình bao
kịch bản như sau.
#!/ bin / bash
MYPROGRAM = cat # Chương trình bạn muốn chạy
TEMPDIR =/ Tmp # Tên của một thư mục tạm thời
DESTDIR = $ HOME / work / data # Thư mục lưu trữ thông tin
try () {$ * 2> / dev / null || echo NO 1> & 2}
set `(thử $ MYPROGRAM | thử safecat $ TEMPDIR $ DESTDIR) 2> & 1`
kiểm tra "$?" = "0" || thoát ra -1
kiểm tra "$ 1" = "KHÔNG" && {rm -f $ DESTDIR / $ 2; thoát ra -1; }
Tập lệnh này minh họa những cạm bẫy khi viết các chương trình an toàn với shell. Các
script giả định rằng chương trình của bạn có thể tạo ra một số đầu ra, nhưng sau đó không hoàn thành.
Không có cách nào cho con mèo an toàn để biết liệu chương trình của bạn có hoàn thành thành công hay không,
vì ngữ nghĩa của shell. Do đó, safecat có thể tạo một tệp trong
thư mục dữ liệu là "hoàn chỉnh" nhưng không hữu ích. Tập lệnh shell xóa tệp trong
trường hợp.
Nói chung, cách an toàn nhất để sử dụng con mèo an toàn là từ trong một chương trình C gọi
safecat với cái nĩa() và thi hành (). Quy trình cha có thể đơn giản giết chết() các con mèo an toàn
xử lý nếu có bất kỳ vấn đề nào phát triển và có thể thử lại theo tùy chọn. Có đi đến cái này không
rắc rối phụ thuộc vào mức độ nghiêm túc của bạn trong việc bảo vệ dữ liệu của mình. Dù bằng cách nào, con mèo an toàn
sẽ không phải là liên kết yếu trong luồng dữ liệu của bạn.
Sử dụng safecat trực tuyến bằng các dịch vụ onworks.net