Làm cách nào tôi có thể nhận rsync để bỏ qua các tệp bị thiếu?


9

Tôi đang thực hiện một lệnh như sau đối với một số hệ thống khác nhau:

$ rsync -a -v foo@machine.company.com:'/path/to/first/*.log path/to/second.txt' /dest/folder/0007/.

Đôi khi * .log không tồn tại và điều đó không sao, nhưng rsync tạo ra lỗi sau:

receiving file list ... rsync: link_stat "/path/to/first/*.log" failed: No such file or directory (2)
done

Có cách nào để ngăn chặn điều đó? Cách duy nhất tôi có thể nghĩ đến là sử dụng các bộ lọc bao gồm và loại trừ, có vẻ như là một PITA đối với tôi. Cảm ơn!

Câu trả lời:


10

Tôi nghĩ rằng câu trả lời cho câu hỏi được mô tả tốt nhất trong câu trả lời này:

https://stackoverflow.com/a/27637277/1236128

--ignore-missing-args

Thật không may, chỉ các phiên bản sau này có chức năng này. Tôi đang chạy RHEL 7 với rsync 3.0.9, dường như không có tùy chọn này.


2

Để làm rõ, bạn có muốn không 'thấy' lỗi không? Trong trường hợp đó, bạn chỉ có thể chuyển hướng Đầu ra Lỗi Tiêu chuẩn, nhưng cuối cùng bạn có thể thiếu một lỗi nghiêm trọng hơn mà bạn có thể muốn biết.

Ví dụ về lỗi chuyển hướng

rsync -a -v foo@machine.company.com:'/path/to/first/*.log path/to/second.txt' /dest/folder/0007/ 2>/dev/null

Nếu thay vào đó, bạn đang tìm cách chỉ bỏ lỡ lỗi trên một tệp không tồn tại, bạn không thể thay đổi bộ lọc rsync * .log và bạn muốn tránh sử dụng bao gồm, bạn có thể gói nó trong một tập lệnh để tiếp tục dựa trên tình trạng.

Ví dụ tập lệnh

#!/bin/sh
# Script to Handle Rsync based on Log File Existence
if [ "$(ls -A /path/to/first/*.log > /dev/null > 2&1)" ]; then
     # Log Exists Use This Rsync
    rsync -a -v foo@machine.company.com:'/path/to/first/*.log path/to/second.txt' /dest/folder/0007/
else
    # Log Does Not Exist Use This Rsync
    rsync -a -v foo@machine.company.com:'path/to/second.txt' /dest/folder/0007/
fi

Hy vọng tôi đã được giúp đỡ.

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.