Ошибка при получении списка файлов … Сбой резервного копирования на клиенте, установленном на сервере

Я успешно использую UrBackup около двух недель как с локальными, так и с удаленными клиентами. Мой сервер — это ПК с Windows.

Однако недавно я испортил размер раздела целевого места резервного копирования, и теперь все резервные копии, которые я пытаюсь выполнить с клиента, установленного на моем сервере, не будут завершены. Стоит отметить, что все остальные резервные копии, с локальных и удаленных клиентов, выполняются успешно.

Вот журнал неудачного резервного копирования на этом ПК:

Запуск незапланированного полного резервного копирования файлов…
Не выбрано никаких компонентов для резервного копирования
Перезапуск теневой копии J: , поскольку она была запущена этим сервером
Индексирование «рабочего стола» выполнено. 8 запросов в файловой системе 0 запросов в БД и 0 обновлений в БД
Индексирование «Загрузок» выполнено. 1 поиск в файловой системе 0 просмотров в БД и 0 обновлений в БД
Индексирование «документов» выполнено. 64 поиска в файловой системе 0 запросов в db и 0 обновлений в db
Индексирование «Музыка» выполнено. 131 поиск в файловой системе 0 запросов в БД и 0 обновлений в БД
Индексирование «изображений» выполнено. 302 поиска в файловой системе 0 запросов в БД и 0 обновлений в БД
Индексирование «Видео» выполнено. 2 поиска в файловой системе 0 просмотров в БД и 0 обновлений в БД
Перезапуск теневой копии C: , потому что она была запущена этим сервером
Индексирование «Общедоступного» завершено. 16 запросов в файловой системе 0 запросов в БД и 0 обновлений в БД
Индексирование «Архива» выполнено. 334 поиска в файловой системе 0 просмотров в БД и 0 обновлений в БД
Пользователь-ПК: загрузка списка файлов…
Ошибка при получении списка файлов для пользовательского ПК. Код ошибки: CANNOT_OPEN_FILE (3)
При резервном копировании произошла ранняя ошибка. Удаление частичной резервной копии.

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

Если бы кто-нибудь мог помочь, я был бы очень признателен.

Спасибо!

Изменить: Возможно, @uroni может взглянуть и посмотреть, есть ли та же проблема, что и в другом потоке? Если это так, я был бы признателен за подробное описание вашего предложения.


Обновить на случай, если кто-то обнаружит это при поиске:

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

Не удалось создать каталог «M: UrBackup My Documents My Music Unknown Artist». — Ошибка данных (циклический контроль избыточности). (код: 23)

Неустранимая ошибка во время резервного копирования. Резервное копирование не завершено

FATAL: Резервное копирование не удалось из-за проблем с диском (см. Предыдущие сообщения)

Резервное копирование не удалось

Очевидно Проверки циклическим избыточным кодом связаны с логическим или физическим повреждением жесткого диска. Выполнение chkdsk — это первое, что нужно попытаться исправить. Однако в моем случае это заняло бы дни, а это всего лишь резервные копии, поэтому я отформатировал диск и начал все заново. После форматирования я запустил файлы UrBackup .bat «remove_unknown» и «cleanup_database», чтобы избавиться от старых резервных копий на сервере. Кажется, проблема решена. Новые резервные копии работают без ошибок.



ошибка при перечислении файлов в каталоге

У меня есть класс java для перечисления файлов в данном каталоге. Он отлично работает с каталогами только с файлами и без подкаталогов. Но если внутри есть дочерний каталог, это дает исключение java.lang.StackOverflowError. Вот класс вместе с методом main ():

  package test; import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import  java.util.Arrays; import java.util.List; открытый класс DisplayFilesAndFolders {public static void main (String [] args) {попробуйте {List  files = getFileList ();  для (Файл файл: файлы) {System.out.println (файл);  }} catch (исключение e) {e.printStackTrace ();  }} общедоступный статический список  getFileList () выдает исключение FileNotFoundException {String sPath = "C: \ Users \ owner \ Desktop \ Screen Shot \";  Файл filePath = новый файл (sPath);  Список  fileList = новый список массивов  ();  Файл [] files = filePath.listFiles ();  Список  fileandFolderList = Arrays.asList (files);  для (Файл файл: fileandFolderList) {fileList.add (файл);  если (file.isDirectory ()) {Список  innerFileList = getFileList ();  fileList.addAll (innerFileList);  }} return fileList;  }}  

Спасибо за ваше время.


Вам нужно взять корень getFileList search в качестве параметра и передавайте подкаталог в качестве аргумента каждый раз при рекурсии. (В настоящее время вы начинаете с C: Users owner Desktop Screen Shot в каждом рекурсивном вызове.)

Попробуйте следующее (это работает как и предполагалось в моей системе):

  public class Test {public static void main (String [] args) {try {String root = "C: \ Users \ owner  \ Рабочий стол \ Снимок экрана \ ";  Список файлов  = getFileList (новый файл (корень));  для (Файл файл: файлы) {System.out.println (файл);  }} catch (исключение e) {e.printStackTrace ();  }} общедоступный статический список  getFileList (File filePath) выдает исключение FileNotFoundException {List  fileList = new ArrayList  ();  Файл [] files = filePath.listFiles ();  Список  fileandFolderList = Arrays.asList (files);  для (Файл файл: fileandFolderList) {fileList.add (файл);  если (file.isDirectory ()) {Список  innerFileList = getFileList (файл);  fileList.addAll (innerFileList);  }} return fileList;  }}  

1

I Раньше реализовывал что-то вроде вашего метода, а также получил исключение StackOverflowException, потому что я не проверял, является ли файл символической ссылкой. Если вы вызовете isDirectory для символической ссылки, указывающей на каталог, она вернет true . Таким образом, вы будете следовать по символической ссылке, которая может указывать куда угодно, что может привести к бесконечному обходу дерева, что приведет к исключению StackOverflowException..

Улучшите этот ответ
ответил 13 сен., 15:04
  • вы можете приведи пример «символьной ссылки»? — tusar 13 сен. ’11 в 15:19
  • 2
    unix> man ln Ищите флаг -s. Когда вы «ls -l» они выглядят так: a -> some/other/dir/a Стрелка — это ключ. — Крис, 13 сентября 2011 г., 15:22
  • Статья, в которой описывается, как создавать символические ссылки в Windows, чтобы вы могли видеть, как ваш код обрабатывает их: windows7home.net/how-to-create-symbolic-link-in -windows-7 — user212218 15 сен., 15:40
  • @Phoenix и Оливер Вейлер, не могли бы вы взглянуть на мою другую проблему (не связанную с этим). Мне нужна ваша помощь, ребята. Спасибо за ваше время. stackoverflow.com/q/8937158/778687 — tusar 3 апр. ’12 в 17:41
добавить комментарий |

Я реализовал что-то вроде вашего метода раньше, а также получил исключение StackOverflowException, поскольку я не проверял, является ли файл символической ссылкой . Если вы вызовете isDirectory для символической ссылки, указывающей на каталог, она вернет true . Таким образом, вы будете следовать по символической ссылке, которая может указывать куда угодно, что может привести к бесконечному обходу дерева, что приведет к исключению StackOverflowException.

Оцените статью
logicle.ru
Добавить комментарий