подавите предупреждение rsync: некоторые файлы исчезли, прежде чем они могли быть переданы

Кажется, что сопоставление и дуплекс становятся смешанными... программа отправляет всю страницу 1, который принтер покорно дуплексы, затем страница 2 и т.д.

Я выключил бы сопоставление, позволить дуплексу принтера, как это, как предполагается. Если Вы хотите сопоставить..., это не имеет смысла к дуплексу.

сопоставляйте обычно интерпретируемый как 'вся страница 1's' в одном выводе, затем вся страница 2, three's и т.д..., таким образом, это почти ожидало, что поведение произведет, как Вы описали.

14
15.08.2013, 18:46
8 ответов

Можно использовать rsyncисключите переключатель (--exclude):

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

Указанный этот путь --exclude '**/tmp/' проигнорирует любой путь, который включает строку /tmp/. Можно предоставить шаблоны этому аргументы также.

Пример

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

Исключит на путях формы: /path/to/*/tmp/.

6
27.01.2020, 19:50
  • 1
    , таким образом, я должен попробовать rsync -a --exclude '/var/kunden/mail/*/*/tmp/' --exclude '/var/kunden/mail/*/*/*/tmp/' /var/kunden/ $SERVER/var_kunden/ ? –  rubo77 15.08.2013, 19:02
  • 2
    @rubo77 - это проигнорирует любые каталоги, которые включают /tmp/ в них, поскольку я записал это. Если Вы хотите быть более явными затем да, можно указать его, как Вы записали. –  slm♦ 15.08.2013, 19:11
  • 3
    @rubo77 --exclude='/tmp/' исключает только названный каталог tmp в корне копии. Исключить все названные подкаталоги tmp где угодно использовать --exclude='**/tmp/'. –  Gilles 'SO- stop being evil' 16.08.2013, 01:16

Ошибка означает, что rsync больше не может найти файлы, которые существовали при построении списка для передачи. Эти ошибки исчезнувшего файла возникают, когда файл изначально был обнаружен, а затем больше не существует. В некоторых случаях это также происходит, когда исходные файлы повреждены или содержат недопустимые символы в имени (поэтому рекомендуется fsck ).

В основном это предупреждение, а не ошибка, поэтому беспокоиться не о чем, поскольку состояние каждого файла назначения отражает состояние соответствующих исходных файлов во время выполнения.

Если это вызывает проблему из-за того, что значение выхода не равно нулю, это можно решить с помощью следующего сценария оболочки ( источник ):

#!/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 не работает.

Более подробно это обсуждается в: Ошибка 3653 - Уменьшение необходимости в предупреждении «исчезнувшие файлы»

6
27.01.2020, 19:50

Или просто (с современным ):

#!/bin/bash

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

Причина в том, что эти файлы существовали пока rsync составляет список файлов для передачи, но перед передачей они удаляются.

Это предупреждение, а не ошибка. Тем не менее, вы должны попытаться выяснить, почему этот файл был удален, возможно, это важно.

Чтобы игнорировать это предупреждение, вы можете использовать параметр --exclude, как указано выше, или использовать параметр -ignore-missing-args rsync, он заставляет rsync игнорировать исчезнувшие файлы: - ignore-missing-args игнорировать отсутствующие исходные аргументы без ошибки это может помочь.

13
27.01.2020, 19:50

К сожалению, в отличие от того, что описано в решении SWdream, - ignore-missing-args не влияет на исчезнувшие файлы. Он просто проигнорирует несуществующие аргументы источника.

См. man rsync :

  - ignore-missing-args 
Когда rsync сначала обрабатывает явно запрошенные исходные файлы 
 (например, аргументы командной строки или --files-from entries), 
обычно является ошибкой, если файл не может быть найден. Эта опция 
подавляет эту ошибку и не пытается передать файл. 
Это не влияет на последующие ошибки исчезнувшего файла, если файл 
изначально был обнаружен, а затем больше не существует. 
 

"Официальный" способ игнорировать исчезнувший файл - использовать этот сценарий из официального репозитория исходных кодов rsync: https: //git.samba. org /? p = rsync.git; a = blob_plain; f = support / rsync-no-vanished; hb = HEAD

, что очень похоже на то, что сказали @kenorb и @ gilles-quenot.

19
27.01.2020, 19:50

Мой ответ может быть особым вариантом использования, но я считаю, что его стоит отметить, чтобы люди не потеряли данные, если они подпадают под этот случай.

Я получил это сообщение для нескольких файлов, выполняя обычное резервное копирование дисков через rsync.

Я выполнил проверку системы на диске, и оказалось, что есть проблемы с диском (размещение/повреждение файла и т. д. )и рекомендовал выполнить резервное копирование + восстановление + переформатирование.

Таким образом, перед тем, как полностью отключить или проигнорировать сообщение, было бы разумно просто выполнить проверку работоспособности диска на всякий случай.

2
27.01.2020, 19:50

Попробуйте смонтировать резервный диск с параметрами nosuid,nodev,nofail,x-gvfs-show.

Не уверен, какую систему вы используете, но полагаю, что это связано с параметрами монтирования вашего диска. В Linux это происходит, если я устанавливаю параметры монтирования на User Session Default. Это разрешается, когда я отключаю его, и rsync завершается без ошибок.

enter image description here

-1
27.01.2020, 19:50

Используйте этот параметр:

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

чтобы поместить список в файл. В файле exclude.ini напишите что-то вроде:

Cache
cache2/*
*.lock
/temp

Где:

  1. исключает ВСЕ папки с именем «Кэш» и его содержимое;
  2. исключает содержимое всех папок с именем «cache2», но включает иерархия папок, так что вы получите все подпапки, но пустые;
  3. исключает все файлы, оканчивающиеся на.lock (, например. некоторые файлы блокировки Firefox и его производные );
  4. исключает содержимое папки /temp.

Помните, что если файловая система зависит -от регистра, вам, возможно, придется учитывать это.

0
27.01.2020, 19:50

Теги

Похожие вопросы