Используя rsync для резервного копирования размещенной Windows доли по Samba в FreeBSD

Я пытаюсь скопировать размещенную Windows долю, с помощью rsync, от поля FreeBSD8.2:

bash$ sudo -i
bash#  uname -a
FreeBSD zeus.companyname.gr 8.2-RELEASE ...amd64
bash# cat /root/.nsmbrc
...
[MACHINENAME:ADMINISTRATOR]
password=mysuperuncrackablepassword
bash# mount_smbfs -N -E utf-8:cp737 -I 192.168.0.2 //Administrator@machinename/f$ /iso1/
bash# ls -l -raw /iso1/prj/
ΠΡΟΕΤΟΙΜΑΣΙΑ ΔΕΔΟΜΕΝΩΝ ΠΑΡΕΛΘΟΝΤΩΝ ΕΤΩΝ
Πανεπιστήμιο - Προβολή, Δημοσιότητα

Членораздельно, я правильно вижу папки с греческими (определенными для локали) символами. Упоминание выше от сессии PuTTY (т.е. сессии SSH), и PuTTY был настроен для перевода UTF-8 по умолчанию.

Обратите внимание, что я не коснулся локали:

bash# locale
LANG=
LC_CTYPE="C"
LC_COLLATE="C"
LC_TIME="C"
LC_NUMERIC="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_ALL=

Таким образом, все, кажется, в порядке.

Однако, когда я попробовал rsyncing от смонтированной папки, некоторые файлы, кажется, исчезают...

bash# rsync --inplace -rltvxp /iso1/ /backups/backup-machinename/
sending incremental file list
file has vanished: "/iso1/prj/..."

Сообщение "файл исчезло", означает, что rsync назвал надлежащие системные вызовы для чтения содержания папки (dir/dirent, я верю), и когда это позже попыталось считать один из содержавших файлов, это не нашло, что - т.е. "открывает (2)", отказавший.

Я проверил файл, о котором сообщают: (a) это существует, (b) это имеет читаемые миром полномочия.

Я затем предположил, что cp737 (греческая кодовая страница) является проблемой, таким образом, я смонтировался снова с...

bash$ mount_smbfs -N -E utf-8:utf-8 -I 192.168.0.2 //Administrator@machinename/f$ /iso1/

... то есть, я использовал utf-8 для стороны Windows, также. Когда я попробовал rsync снова, однако, он застрял (!) с 100%-й загрузкой ЦП... Присоединение с GDB показало:

bash# gdb /usr/local/bin/rsync 3109
GNU gdb 6.1.1 [FreeBSD]
Attaching to program: /usr/local/bin/rsync, process 3109
Reading symbols from /lib/libc.so.7...(no debugging symbols found)...done.
Loaded symbols for /lib/libc.so.7
Reading symbols from /libexec/ld-elf.so.1...(no debugging symbols found)...done.
Loaded symbols for /libexec/ld-elf.so.1
0x0000000800709c0a in getdirentries () from /lib/libc.so.7

... таким образом, кажется, что rsync застревает, ожидая getdirentries для возврата, или каждый вызов к getdirentries занимает невозможное количество времени...

Какие-либо идеи?

Кому-либо удалось сделать то, что я делаю? Т.е. FreeBSD Использования в rsync файлы с определенными для локали символами в их именах файлов, от доли Windows, которая смонтирована через mount_smbfs?

P.S. В случае, если любой задается вопросом, почему я пытаюсь сделать это, ответ прост: ZFS.

1
задан 21.03.2016, 15:48

1 ответ

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

Существует также версия для Windows rsync, который может быть выполнен как системная служба (http://www.brentnorris.net/rsyncntdoc.html). Таким образом, у Вас нет сетевой нагрузки и потому что она только использует местные вызовы на машине, которая будет скопирована, она может зафиксировать выше проблем также. Я использовал этот метод для резервного копирования пользовательских ноутбуков.

1
ответ дан 17.12.2019, 00:23

Теги

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