смени каталог на сетевой диск в Cygwin

10

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

Для начала, как мне cdв жесткий диск? В проводнике Windows я просто набираю, //192.168.1.1и он берет меня на сетевой диск. Однако, когда я печатаю, cd //192.168.1.1это не работает. Так как я могу изменить каталог на HD?

Во-вторых, есть ли у кого-нибудь совет, как написать хороший резервный скрипт для рекурсивного копирования определенных каталогов, если они изменились?

drjrm3
источник

Ответы:

15

Вы можете посмотреть на смонтированные диски в представлении среды cygwin UNIX базовой ОС Windows, заглянув внутрь /cygdrive. Сделайте dfв приглашении оболочки cygwin (обычно bash), чтобы увидеть, где смонтированы диски. Вот документация о том, где находятся смонтированные диски . Например, чтобы перейти на сетевой диск, смонтированный как Windows f:\, вы должны cdсделать следующее /cygdrive/f:

$ cd /cydrive/f

Вот пример:

  1. OS X Mavericks (UNIX) имеет диск 3 ТБ, смонтированный как /Volumes/Time Machine
  2. Виртуальная Windows XP (VM) работает на OS X и видит /Volumes/Time MachineкакX:\
  3. Cygwin работает на XP VM и видит /Volumes/Time Machineкак /cygdrive/xили дажеx:

$ ls x:

Вот картинка:

введите описание изображения здесь

Если внешний жесткий диск в данный момент не смонтирован на хосте Windows и уже сопоставлен с точкой монтирования /cygdrive, возможно, вам придется смонтировать сетевой ресурс самостоятельно. Посмотрите на реализацию Cygwin mountкоманды UNIX .

Другой способ просмотра сетевой папки - в соответствии с синтаксисом, который вы использовали - мой сервер OS X экспортирует мою папку входа в OS X, whmcclos, как общую папку SMB. Я могу установить свой текущий рабочий каталог в эту общую папку из cygwin на моей виртуальной машине с Windows XP, работающей под OS X, следующим образом:

$ cd //192.168.0.2/whmcclos

Таким образом, мне даже не нужно монтировать папку в виде буквы диска, чтобы просмотреть ее изнутри cygwin.

Для резервного копирования файлов, которые были изменены, rsyncбудет рекурсивно выполнять резервное копирование только файлов в дереве каталогов, которые изменились - он вычисляет минимальный набор резервных копий и выполняет резервное копирование только того, что изменилось, и имеет множество параметров, включая копирование на сетевые диски и возможность использования с шифрованием через ssh. Вот несколько советов по использованию rsyncCygwin. Вот команда для сжатия и архивирования (рекурсии) источника на диске, смонтированном как c:\ и помещенном в цель на диске, смонтированном как f:\на хосте Windows, лежащем в основе cygwin.

$ rsync -avz /cygdrive/c/path/to/source /cygdrive/f/path/to/target

Если вам нужна дополнительная помощь, пожалуйста, оставьте комментарий.

Билли Макклоски
источник
Спасибо, у меня все еще есть вопрос - при использовании -avzон не правильно копирует разрешения. Я получаю rsync: failed to set permissions on "<path>": Permission denied (13). Есть идеи как это исправить?
drjrm3
Это звучит как то, что я видел однажды с разрешениями, особенно с разрешениями ACL. Посмотрите на разрешения, включая ACL с, /bin/ls -le /path/to/sourceа также /bin/ls -le /path/to/targetчтобы проверить не только различные разрешения для папок, но и разрешения ACL для этих папок. См man lsи -leпереключатели и man chmodи в +aи -aпереключатели. Я на 99% уверен, что это как-то связано с разрешениями. Начните с rsync'а подмножества дерева исходных текстов, чтобы сказать, /tmpгде вы знаете, что у вас есть разрешение на запись, и посмотрите, как это работает.
Билли Макклоски