ไม่แสดงคำเตือน rsync: ไฟล์บางไฟล์หายไปก่อนที่จะถ่ายโอนได้


15

ฉันได้รับคำเตือนจำนวนมากเมื่อสำรองไฟล์เซิร์ฟเวอร์ Postfix และ Courier ที่ใช้งานอยู่เช่น:

file has vanished: /var/kunden/mail/username/name@mymail.de/tmp/courier.lock

ฉันจะปราบปรามคำเตือนผู้ที่มาจากวิธีการที่rsyncเมื่อทำงานได้จาก Cron /usr/bin/rsnapshot hourly?

ฉันสามารถแยกออกจาก dirs เหล่านั้นได้หรือไม่?

/var/kunden/mail/*/*/tmp/

tmpโฟลเดอร์สามารถลึกเช่นกันตัวอย่างเช่น:

file has vanished: /var/kunden/mail/username/name@mymail.de/.Presse/tmp/1353871473.M716135P32214_imapuid_36.test.de
file has vanished: /var/kunden/mail/username/name@mymail.de/.Presse/tmp/courier.lock

คำตอบ:


7

คุณสามารถใช้rsyncสวิตช์ยกเว้นของ ( --exclude):

$ rsync -avz --exclude '**/tmp/' source/ destination/

ระบุวิธีนี้จะไม่สนใจเส้นทางซึ่งรวมถึงสตริงใด--exclude '**/tmp/'/tmp/คุณสามารถระบุรูปแบบให้กับข้อโต้แย้งนี้ได้เช่นกัน

ตัวอย่าง

$ rsync -avz --exclude '/path/to/*/tmp/' source/ destination/

/path/to/*/tmp/จะไม่รวมอยู่บนเส้นทางของรูปแบบ:


ดังนั้นผมจึงต้องพยายามrsync -a --exclude '/var/kunden/mail/*/*/tmp/' --exclude '/var/kunden/mail/*/*/*/tmp/' /var/kunden/ $SERVER/var_kunden/ ?
rubo77

@ rubo77 - มันจะไม่สนใจไดเรกทอรีใด ๆ ที่รวม/tmp/อยู่ในนั้นเมื่อฉันเขียน หากคุณต้องการให้ชัดเจนยิ่งขึ้นแล้วใช่คุณสามารถระบุได้ตามที่คุณเขียน
slm

@ rubo77 --exclude='/tmp/'ไม่รวมไดเรกทอรีที่เรียกว่าtmpที่ root ของสำเนาเท่านั้น หากต้องการยกเว้นไดเรกทอรีย่อยทั้งหมดที่เรียกtmpใช้--exclude='**/tmp/'อยู่ให้ใช้
Gilles 'หยุดความชั่วร้าย' ใน

1
... หรือใช้ระบบไฟล์ที่มีสแนปชอต ... ดูเหมือนว่าจะมีปัญหาในการคืนค่าการสำรองข้อมูลซึ่งไฟล์หายไปครึ่งทาง ... เว้นแต่ว่ามันไม่สำคัญในกรณีนี้ใช่พวกเขาอาจจะถูกยกเว้น ...
Erk

19

น่าเสียดายที่แตกต่างจากที่อธิบายไว้ในโซลูชัน SWdream --ignore-missing-argsไม่มีผลกับไฟล์ที่หายไป มันจะไม่สนใจอาร์กิวเมนต์แหล่งที่ไม่มีอยู่

ดูman rsync:

  --ignore-missing-args
          When rsync is first processing the explicitly  requested  source
          files  (e.g. command-line arguments or --files-from entries), it
          is normally an error if the file cannot be found.   This  option
          suppresses  that  error,  and does not try to transfer the file.
          This does not affect subsequent vanished-file errors if  a  file
          was initially found to be present and later is no longer there.

วิธี "เป็นทางการ" ของการละเว้นไฟล์ที่หายไปคือการใช้สคริปต์นี้จากแหล่งเก็บข้อมูลอย่างเป็นทางการ rsync: https://git.samba.org/?p=rsync.git;a=blob_plain;f=support/rsync-no- หายไป; HB = HEAD

ซึ่งคล้ายกับสิ่งที่ @kenorb และ @ gilles-quenot พูด


13

เหตุผลคือไฟล์เหล่านี้มีอยู่ในขณะที่ rsync กำลังสร้างรายการไฟล์ที่จะถ่ายโอน แต่จะถูกลบออกก่อนที่จะถ่ายโอน

เป็นการนวดเตือนไม่ใช่ข้อผิดพลาด อย่างไรก็ตามคุณควรลองค้นหาสาเหตุที่ไฟล์เหล่านี้ถูกลบไปมันอาจจะสำคัญ

ในการเพิกเฉยต่อคำเตือนนี้คุณสามารถใช้ - ยกเว้นตัวเลือกตามคำถามข้างต้นหรือใช้-ignore-missing-argsตัวเลือก rsync มันทำให้ rsync ไม่สนใจไฟล์ที่หายไป: --ignore-missing-args ignore missing source args without error มันอาจช่วยได้


ดูเหมือนว่าจะดีกว่าการตรวจสอบรหัสส่งคืนที่เจาะจงและลบล้างไปที่ 0
Boycott SE สำหรับ Monica Cellio

ยกเว้นในบางกรณีไฟล์ที่หายไปในระหว่างการสำรองข้อมูลสดเป็นเรื่องปกติอย่างสมบูรณ์ (แอปพลิเคชั่นจำนวนมากสร้างไฟล์ชั่วคราวอายุสั้น) นี่เป็นเรื่องจริงโดยเฉพาะอย่างยิ่งในกรณีของเซิร์ฟเวอร์อีเมลซึ่งไฟล์ที่มีข้อความอีเมลจะถูกย้ายจากไดเรกทอรีหนึ่งไปอีกไดเรกทอรีหนึ่งอย่างต่อเนื่องดังนั้น IMHO คำตอบนี้เพียงพอมากกว่าที่ยอมรับโดย OP
MoonSweep

1
น่าเสียดายที่ตัวเลือกนี้ไม่มีใน rynsc ทุกรุ่น โดยเฉพาะอย่างยิ่ง 3.0.6 ซึ่งมาพร้อมกับ CentOS 6
jph

3
ตัวเลือกนี้มีผลเฉพาะไฟล์ที่มีชื่ออยู่ในอาร์กิวเมนต์ซึ่งพบในระหว่างการค้นหาแบบเรียกซ้ำยังคงได้รับการเตือน
Jasen

6

ข้อผิดพลาดหมายความว่าrsyncไม่สามารถหาไฟล์ที่มีอยู่ในขณะสร้างรายการเพื่อถ่ายโอนอีกต่อไป ข้อผิดพลาดที่หายไปของไฟล์เหล่านี้เกิดขึ้นเมื่อไฟล์ถูกพบครั้งแรกว่ามีอยู่และต่อมาจะไม่มีอีกต่อไป ในบางกรณีก็ยังเกิดขึ้นเมื่อแฟ้มต้นฉบับเสียหายหรือมีตัวละครที่ไม่ถูกต้องในชื่อ (เพื่อfsckให้คำแนะนำ)

โดยทั่วไปนี่เป็นคำเตือนไม่ใช่ข้อผิดพลาดดังนั้นจึงไม่มีอะไรต้องกังวลเนื่องจากสถานะของไฟล์ปลายทางแต่ละไฟล์จะแสดงสถานะว่าไฟล์ต้นฉบับที่เกี่ยวข้องระหว่างการเรียกใช้

หากเป็นสาเหตุของปัญหาเนื่องจากค่าออกไม่เป็นศูนย์สิ่งนี้สามารถแก้ไขได้โดยสคริปต์ wrapper ( แหล่งที่มา ) ต่อไปนี้:

#!/bin/bash
(rsync "$@"; if [ $? == 24 ]; then exit 0; else exit $?; fi) 2>&1 | grep -v 'vanished'

หรือโดยวิธีแก้ปัญหาต่อไปนี้ ( แหล่งที่มา ):

#!/bin/sh
OUT=`/usr/bin/snapback2 2>&1`
RET=$?
if [ "$RET" != "23" -a "$RET" != "0" -a "$RET" != 24 ]; then
    echo "$OUT"
    exit $RET
fi

ซึ่งโดยทั่วไปแล้วจะมีรหัสข้อผิดพลาดเดียวกันกับ rsync หาก rsync ล้มเหลว

มีการกล่าวถึงต่อไปใน: Bug 3653 - ลดความจำเป็นในการเตือน "ไฟล์ที่หายไป"


6

หรือเพียง (ด้วยทันสมัย):

#!/bin/bash

/usr/bin/rsync "$@" 2> >(grep -Ev '(file has |rsync warning: some files )vanished')
ret=$?
((ret==24)) && exit 0 || exit $ret

1
จะไม่ยับยั้งคำเตือนของไฟล์ทุกชนิดที่มีสตริงvanishedอยู่หรือไม่
rubo77

แน่นอนว่าโพสต์แก้ไขตามนั้น
Gilles Quenot

2

คำตอบของฉันอาจเป็นกรณีการใช้งานพิเศษ แต่ฉันรู้สึกว่ามันคุ้มค่าที่จะสังเกตเห็นดังนั้นผู้คนจะไม่สูญเสียข้อมูลหากพวกเขาตกอยู่ภายใต้กรณีนี้

ฉันได้รับข้อความนั้นสำหรับไฟล์หลาย ๆ ไฟล์ในขณะที่ทำการสำรองข้อมูลตามปกติของไดรฟ์ผ่านทาง rsync

ฉันทำการตรวจสอบระบบบนดิสก์และปรากฎว่ามีปัญหากับไดรฟ์ (การจัดสรร / ความเสียหายของไฟล์ ฯลฯ ) และแนะนำการสำรองข้อมูล + คืนค่า + ฟอร์แมตใหม่

ดังนั้นก่อนที่คุณจะออกจากการระงับหรือเพิกเฉยต่อข้อความทันทีคุณควรตรวจสอบสุขภาพของไดรฟ์เพื่อความปลอดภัย


ความล้มเหลวของไดรฟ์จะไม่เกิดขึ้นเฉพาะในtmpไดเรกทอรีเท่านั้น

0

ลองติดตั้งดิสก์สำรองของคุณพร้อมnosuid,nodev,nofail,x-gvfs-showตัวเลือก

ไม่แน่ใจว่าระบบที่คุณใช้อยู่ แต่ฉันเชื่อว่าสิ่งนี้เกี่ยวข้องกับตัวเลือกการเมานท์ของดิสก์ของคุณ บน Linux สิ่งนี้จะเกิดขึ้นหากฉันตั้งค่าตัวเลือกการเมานUser Session Defaultท์ จะแก้ไขเมื่อฉันปิดการใช้งานและ rsync เสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด

ป้อนคำอธิบายรูปภาพที่นี่


0

ใช้พารามิเตอร์นี้:

--exclude-from="./exclude.ini"

เพื่อใส่รายการในไฟล์ ในไฟล์ excluse.ini ให้เขียนดังนี้:

Cache
cache2/*
*.lock
/temp

ที่ไหน:

  1. ไม่รวมโฟลเดอร์ทั้งหมดที่ชื่อว่า "แคช" และเนื้อหาของเขา
  2. แยกเนื้อหาของโฟลเดอร์ "cache2" ทั้งหมดที่มี แต่รวมลำดับชั้นของโฟลเดอร์ดังนั้นคุณจะได้รับโฟลเดอร์ย่อยทั้งหมด แต่ว่างเปล่า
  3. ไม่รวมไฟล์ทั้งหมดที่ลงท้ายด้วย. lock (เช่นไฟล์ล็อคบางไฟล์ของ Firefox และ derivates)
  4. ไม่รวมเนื้อหาของ / โฟลเดอร์ temp

โปรดจำไว้ว่าหากระบบไฟล์เป็นกรณี ๆ ไปคุณอาจต้องคำนึงถึงเรื่องนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.