Клон МЕРЗАВЦА к внешнему диску для резервного копирования

Нам настраивали МЕРЗАВЦА в нашей сети окон (использующий msysgit и GitExtensions). У каждого из нас есть наши собственные репозитории, и мы продвигаем в удаленный 'пустой' репозиторий на одном из наших серверов. Вся польза.

Я пытаюсь настроить запланированное задание на сервере, который клонирует репозиторий с диска C на внешний диск (на F) - имеющий некоторую трудность, заставляя это работать. Я могу сделать это в ударе МЕРЗАВЦА относительно легко, но я не уверен, как сохранить это в пакетный файл, что я могу затем scehdule.

Что я имею до сих пор:

rmdir F:\GitClone /s /q
mkdir F:\GitClone
mkdir F:\GitClone\Repo1
CD /D F:\GitClone\Repo1\
GIT CLONE /c/GIT/Repo1/

Я также попробовал следующее за последнюю строку:

GIT CLONE C:\GIT\Repo1\

Но это не работает также... Я немного озадачен и ценил бы некоторую справку. Диск C содержит наши пустые репозитории и диск F, являющийся нашим внешним диском, который мы ежедневно выгружаем...


Несколько ответов здесь, которые были очень полезны, спасибо. Мой получающийся ответ является, вероятно, комбинацией их, так точки для указания, как запустить скрипт удара и как написать сценарий получения по запросу/нажатия.

Потребность объединить их для работы так, чтобы было счастливо, когда различные диски загружаются и (т.е. клонируют репозиторий, если это не существует на внешнем диске и затем только вытягивает различия иначе) но это должно быть выполнимо. Благодаря всем.

18
задан Paddy 8 February 2019 в 14:36
поделиться

5 ответов

Метод выполнения обычно реализуется соответствующими адаптерами базы данных и возвращает объект Result из соответствующих библиотек базы данных. Итак, если вы используете Mysql, возвращаемое значение будет иметь тип Mysql :: Result .

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

Хорошо, давайте начнем с создания вашего репо.

$ cd /tmp
$ mkdir myrepo && cd myrepo
$ touch hi && git add . && git commit -m "bla" 

Итак, это ваш репозиторий. Теперь мы создаем клон:

$ cd /tmp
$ mkdir backup && cd backup 
$ git --bare init
Initialized empty Git repository in /tmp/backup/

Теперь давайте настроим ваше репо для регулярного резервного копирования…

$ cd /tmp/myrepo
$ git remote add backup /tmp/backup
$ git config remote.backup.mirror true

Затем скопируйте все в резервную копию:

$ git push backup
Counting objects: 3, done.
Writing objects: 100% (3/3), 206 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
To /tmp/backup
 * °new branch§      master -> master

И посмотрите, сработало ли это:

$ cd /tmp/backup
$ git log
commit d027b125166ff3a5be2d7f7416893a012f218f82
Author: Niko Schwarz <niko.schwarzàgmail.com>
Date:   Fri Dec 11 12:24:03 2009 +0100

    hi

Тада, все готово. Следовательно, все, что нужно сделать вашему сценарию, - это выполнить git push backup . Совершенно нет необходимости многократно выбрасывать старую резервную копию.

В качестве альтернативы вы можете использовать rsync , который сделает все за вас:

rsync -av rsync://rsync.samba.org/ftp/unpacked/rsync /dest/dir/

Пользователь Offby добавляет : Начиная с версии 1.5.4, "git remote add" принимает "--mirror" параметр, который избавляет вас от необходимости использовать «git config remote.origin.mirror true» и передавать --mirror в «git push».

Теперь мы создаем клон:

$ cd /tmp
$ mkdir backup && cd backup 
$ git --bare init
Initialized empty Git repository in /tmp/backup/

Теперь давайте настроим ваше репо для регулярного резервного копирования…

$ cd /tmp/myrepo
$ git remote add backup /tmp/backup
$ git config remote.backup.mirror true

Затем скопируйте все в резервную копию:

$ git push backup
Counting objects: 3, done.
Writing objects: 100% (3/3), 206 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
To /tmp/backup
 * °new branch§      master -> master

И посмотрите, сработало ли это:

$ cd /tmp/backup
$ git log
commit d027b125166ff3a5be2d7f7416893a012f218f82
Author: Niko Schwarz <niko.schwarzàgmail.com>
Date:   Fri Dec 11 12:24:03 2009 +0100

    hi

Тада, все готово. Следовательно, все, что нужно сделать вашему сценарию, - это выполнить git push backup . Совершенно нет необходимости многократно выбрасывать старую резервную копию.

В качестве альтернативы вы можете использовать rsync , который сделает все за вас:

rsync -av rsync://rsync.samba.org/ftp/unpacked/rsync /dest/dir/

Пользователь Offby добавляет : Начиная с версии 1.5.4, "git remote add" принимает "--mirror" опция, которая избавляет вас от необходимости использовать «git config remote.origin.mirror true» и передавать --mirror в «git push».

Теперь мы создаем клон:

$ cd /tmp
$ mkdir backup && cd backup 
$ git --bare init
Initialized empty Git repository in /tmp/backup/

Теперь давайте настроим ваше репо для регулярного резервного копирования…

$ cd /tmp/myrepo
$ git remote add backup /tmp/backup
$ git config remote.backup.mirror true

Затем скопируйте все в резервную копию:

$ git push backup
Counting objects: 3, done.
Writing objects: 100% (3/3), 206 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
To /tmp/backup
 * °new branch§      master -> master

И посмотрите, сработало ли это:

$ cd /tmp/backup
$ git log
commit d027b125166ff3a5be2d7f7416893a012f218f82
Author: Niko Schwarz <niko.schwarzàgmail.com>
Date:   Fri Dec 11 12:24:03 2009 +0100

    hi

Тада, все готово. Следовательно, все, что нужно сделать вашему сценарию, - это выполнить git push backup . Совершенно нет необходимости многократно выбрасывать старую резервную копию.

В качестве альтернативы вы можете использовать rsync , который сделает все за вас:

rsync -av rsync://rsync.samba.org/ftp/unpacked/rsync /dest/dir/

Пользователь Offby добавляет : Начиная с версии 1.5.4, "git remote add" принимает "--mirror" параметр, который избавляет вас от необходимости использовать «git config remote.origin.mirror true» и передавать --mirror в «git push».

все, что нужно сделать вашему сценарию, - это выполнить git push backup . Совершенно нет необходимости многократно выбрасывать старую резервную копию.

В качестве альтернативы вы можете использовать rsync , который сделает все за вас:

rsync -av rsync://rsync.samba.org/ftp/unpacked/rsync /dest/dir/

Пользователь Offby добавляет : Начиная с версии 1.5.4, "git remote add" принимает "--mirror" опция, которая избавляет вас от необходимости использовать «git config remote.origin.mirror true» и передавать --mirror в «git push».

все, что нужно сделать вашему сценарию, - это выполнить git push backup . Совершенно нет необходимости многократно выбрасывать старую резервную копию.

В качестве альтернативы вы можете использовать rsync , который сделает все за вас:

rsync -av rsync://rsync.samba.org/ftp/unpacked/rsync /dest/dir/

Пользователь Offby добавляет : Начиная с версии 1.5.4, "git remote add" принимает "--mirror" опция, которая избавляет вас от необходимости использовать «git config remote.origin.mirror true» и передавать --mirror в «git push».

28
ответ дан 30 November 2019 в 07:23
поделиться

Почему вы удаляете клон все время? В чем смысл клонирования существующего репозитория, если вы просто хотите скопировать файл?

Просто создайте репо на внешнем диске (используя git clone один раз ), а затем запустите git pull на нем регулярно.

0
ответ дан 30 November 2019 в 07:23
поделиться

Поскольку команда git немного странная, вам нужно использовать call для выполнения любых команд git из командного файла:

rmdir F:\GitClone /s /q
mkdir F:\GitClone
CD /D F:\GitClone\
call GIT CLONE c/GIT/Repo1/
4
ответ дан 30 November 2019 в 07:23
поделиться

Вы всегда можно было просто запланировать bash.exe mybashbackupscript.sh

В любом случае, в терминах Windows:

rmdir F:\GitClone /s /q
mkdir -p F:\GitClone\Repo1
copy c:\GIT\Repo1\.git F:\GitClone\Repo1\.git

git clone на самом деле не делает ничего более интересного, чем это.

edit: как заметил кто-то другой, вероятно, лучше всего просто создать новое репозиторий резервных копий и просто вытащить / загрузить его. Вы избежите проблем с доступом к .git :)

На самом деле я не делаю ничего более интересного, чем это.

edit: как заметил кто-то другой, вероятно, лучше всего просто создать новое хранилище резервных копий и просто вытащить / загрузить его. Вы избежите проблем с доступом к .git :)

На самом деле я не делаю ничего более интересного, чем это.

edit: как заметил кто-то другой, вероятно, лучше всего просто создать новое хранилище резервных копий и просто вытащить / загрузить его. Вы избежите проблем с доступом к .git :)

4
ответ дан 30 November 2019 в 07:23
поделиться

Извините, я не могу комментировать сообщения, но я тоже думал о копировании .git, но что произойдет, если .git будет скопирован во время извлечения?

В любом случае, зачем копировать все, что вы можете получить изменения время от времени?

Инициализация резервного копирования: (в F: \ GitClone \ Repo1 пусто)

git init
git add remote origin /c/GIT/Repo1

Тогда ваш "сценарий дельта-резервного копирования" просто сделает:

cd /f/GitClone/Repo1
git fetch origin
1
ответ дан 30 November 2019 в 07:23
поделиться
Другие вопросы по тегам:

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