У меня есть MinGW (также известный как «Git Bash» ) в Windows 7 и командный файл, который запускает rsync для резервного копирования файлов на внешний диск на удаленном компьютере с Linux. Вот командный файл ( my_rsync_file.bat
)
REM Changing directory... (assuming we are in G:/My Documents/My Various Things)
cd ../
REM starting rsync...
bash -c "rsync -avzh -P --stats --timeout=60 --exclude Downloads . 'my_remote_linux_computer@128.95.170.200:/media/my_remote_linux_computer/LaCie/My\ Documents'"
Вот немного построчное объяснение:
REM Changing directory... (assuming we are in G:/My Documents/My Various Things)
Это просто выдает сообщение, чтобы напомнить мне, что происходит.
cd ../
Это изменяет каталог на один уровень выше, где находится пакетный файл (на «Мои документы»). Пакетный файл находится на внешнем диске на моем компьютере с Windows. Я хочу синхронизировать все папки «Мои документы» на этом внешнем диске с папкой с тем же именем на внешнем диске на моем удаленном компьютере с Linux.
REM starting rsync...
Просто печатает другое сообщение.
bash -c "rsync -avz -P --stats --timeout=60 --exclude Downloads . my_remote_linux_computer@128.95.155.200:/media/my_remote_linux_computer/LaCie/My\\ Documents"
bash
: запускает MinGW, который имеет встроенную библиотеку rsync
-c
: не уверен, что это делает
rsync
: библиотека для синхронизации файлов, поставляется с MinGW
-avzh
: a-Archive, v-Verbose, z-Compress, h-Human-readable, это общие параметры (подробнее: http://linux.die.net/man/1/rsync )
-P
: показать прогресс для больших файлов, чтобы я знал, заморожен он или нет
--stats
: показать итоговое количество файлов и байтов, переданных в конце
--timeout=60
: убить его после 60 секунд, если он застрянет,
--exclude
пропустите файлы / каталоги из синхронизации, в этом случае я исключаю каталог с именем «Загрузки»
.
: указывает на синхронизацию всего содержимого «Моих документов» (ожидаю, что указанную вещь исключить в строке выше)
my_remote_linux_computer
: name моего удаленного компьютера с Linux (не настоящее имя;)
@128.95.155.200
: IP-адреса моего удаленного компьютера Linux, с https://www.whatismyip.com/ (не мой фактический IP-адрес :)
/media/my_remote_linux_computer/LaCie/My\\ Documents
: путь к каталогу на моем удаленном компьютере Linux, который я хочу получать файлы. Это внешний диск.
Обратите внимание, что пробел в «Моих документах» экранируется двумя обратными слешами, а полное имя и каталог удаленного места назначения заключены в двойные кавычки.
Когда я запускаю двойной щелчок мышью по файлу bat, мне предлагается ввести пароль для моего удаленного компьютера с Linux. Когда он завершается, я получаю некоторые сводные данные и мне предлагается нажать любую клавишу для закрытия.
-c
параметра от bash man: Если опция -c присутствует, то команды читаются из строки. Если после строки есть аргументы, они присваиваются позиционным параметрам, начиная с $ 0.