Ошибка Rsync 23: некоторые файлы не были переданы при копировании файлов от диска Windows до внешнего жесткого диска

Можно получить область с capture-pane команда tmux. Просто введите:

Ctrl+b
:capture-pane

Содержание области будет сохранено в новом буфере (или существующий с -b переключатель). -S переключатель (начинающий номер строки) также будет полезен, если Вы захотите получить строки вне текущего экрана. Отрицательные числа к -S укажите строки выше текущего экрана.

Затем можно использовать list-buffers и show-buffer команды для наблюдения содержания.

5
22.02.2015, 18:32
3 ответа

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

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

Я провел эксперимент с шлейфными устройствами, где я сначала изменил шлейф1, а затем изменил шлейф2, так что шлейф2 был более «последним», но он игнорируется:

# mdadm --assemble /dev/md42 /dev/loop1 /dev/loop2
mdadm: ignoring /dev/loop2 as it reports /dev/loop1 as failed
mdadm: /dev/md42 has been started with 1 drive (out of 2).

И если вы сделаете это наоборот, он просто игнорирует другой диск:

# mdadm --assemble /dev/md42 /dev/loop2 /dev/loop1
mdadm: ignoring /dev/loop1 as it reports /dev/loop2 as failed
mdadm: /dev/md42 has been started with 1 drive (out of 2).

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

Он не синхронизируется автоматически, он даже полностью игнорирует другой диск:

# cat /proc/mdstat 
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] 
md42 : active raid1 loop1[0]
      102272 blocks super 1.2 [2/1] [U_]

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

-121--71636-

Это довольно легко в Python с os.walk . Предупреждение, непроверенный код. Я предполагаю, что список имен содержит одно имя в строке с

#!/usr/bin/python2
import os
names_file = open('names.log')
names = set(line.rstrip('\n') for line in names_file.readlines())
names_file.close()
for root, dirs, files in os.walk('/path/to/top/directory'):
    for name in files:
        path = os.path.join(root, name)
        if os.path.isfile(path):
            if name not in names:
                print path
                #os.remove(path) # uncomment this line if you're happy with the set of files to remove
-121--133533-

Если вы не сохранили весь вывод из rsync , то единственный способ найти то, что не было скопировано, - это выполнить другой обход для сравнения. Вы также можете запустить rsync снова: его весь пункт состоит в том, чтобы не передавать то, что уже было передано. Не передавайте параметр -v , чтобы вас не переполняли скучные выходные данные.

rsync -aq … 2>rsync.err

(Можно использовать rsync -anq... для сравнения без переноса, но если вы только что сделали копию, она больше ничего не копирует, поэтому -n не имеет никакого значения в этом сценарии.)

3
27.01.2020, 20:41

Если ни источник, ни место назначения не были изменены, можно снова запустить rsync с -n ], чтобы увидеть, что будет передано без копирования данных. Добавление -q подавит обычный вывод, отображая только файлы, которые не удалось передать.

rsync -azvqn --exclude-from '/home/mint/exclude.txt' '/media/mint/OS/' '/media/mint/external_hdd/C_drive_backup/'
0
27.01.2020, 20:41

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

Если бы это не решило проблему, следующим шагом был бы выбор целевого местоположения как можно менее глубоко.

0
26.04.2021, 06:30

Теги

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