Làm thế nào để mô phỏng nối ống?


1

Tôi đang sử dụng curlftpfsđể gắn ổ đĩa từ xa. Thật không may, với tệp nằm ở phía xa, tôi không thể sử dụng >>thao tác. Theo tôi hiểu từ liên kết này, không thể thêm vào tệp hiện có (trừ khi tôi nhầm, xin vui lòng sửa cho tôi). Vì vậy, tôi có chức năng như thế này:

LogMe()
{
  p="$1"
  DateTime=`date "+%Y/%m/%d %H:%M:%S"`
  echo $DateTime' : '$p >> $logfile
}

$logfilelà tập tin từ xa được gắn kết bằng cách sử dụng curlftpfs. Làm cách nào tôi có thể sửa đổi chức năng của mình để hỗ trợ nối thêm mà không cần sử dụng <<?

Câu trả lời:


1

Cách tối ưu là chỉ cần bỏ qua curlftpfs cho quyền truy cập này, vì giao thức ftp có lệnh chắp thêm để thêm dữ liệu vào tệp. Vì vậy, thiết lập kết nối ftp một lần chỉ để cập nhật, ví dụ:

echo $DateTime' : '$p | 
curl --append -T - ftp://user:password@host/some/logfile

Ftp thứ 2 này không nên gây nhiễu quá mức nếu bạn không tham khảo logfile thông qua điểm gắn kết.

Tuy nhiên, nếu bạn không muốn sử dụng ftp thứ 2, bạn sẽ phải sao chép toàn bộ logfile, thêm dòng, sau đó sao chép lại. Lệnh sponge có thể giúp bạn đơn giản hóa công việc:

(cat $logfile; echo $DateTime' : '$p) | sponge $logfile

bọt biển thu thập tất cả các đầu vào thành một tập tin tạm thời, trước khi đổi tên "nguyên tử" thành tập tin đầu ra.


Tôi cũng đã đi đến giải pháp thứ hai, mặc dù lần đầu tiên cũng đáng kể.
Pablo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.