1

Я пытаюсь сделать резервную копию моего каталога Eclipse .metadata . Я запускаю команду:

cp -Rf ~/some/where/.metadata/* ~/some/backup/.metadata/.

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

Теперь запуск сценария не будет создавать или перемещаться в .plugins или .mylyn . Дополнительные исследования привели к нулевым результатам.

Я использую:

Windows XP SP 3

Cygwin 1.7.1-1

2 ответа2

1

Подстановочный знак * в ~/some/where/.metadata/* не соответствует файлам или каталогам, начинающимся с точки. Это поведение большинства снарядов, а не только Cygwin. Некоторые альтернативы:

  • Используйте другой аргумент, чтобы явно включить точечные файлы
    cp -Rf ~/some/where/.metadata/* ~/some/where/.metadata/.* ~/some/backup/.metadata/.

(.* сопоставляет файлы и каталоги, начинающиеся с двух или более точек)

  • Используйте выражение, которое не использует подстановочный знак:
    cp -Rf ~/some/where/.metadata/ ~/some/backup/
  • Используйте tar cf - | tar xf - идиома
    tar cf - ~/some/where/.metadata | (cd ~/some/backup/.metadata ; tar xf -)
0

Я предпочитаю использовать rsync или cpio для копирования каталогов:

rsync -acv --delete . DST

find . | cpio -pudvm DST

Я подозреваю, что я один из немногих, кто использует cpio ; Это старая привычка работать на машинах SysV. У него есть недостаток, который вы должны скопировать из текущего каталога: если вы передадите абсолютный путь для find , этот путь будет реплицирован в целевой каталог. С другой стороны, rsync имеет свою странность в зависимости от того, имеет ли каталог SRC завершающий слеш.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .