는 자식의 repo를 백업하려면이백업 git repo : 아카이브 미러 클론 ... tar -Pzcf는 어떨까요?
는/usr/빈/타르 -Pzcf git_backup.tar.gz repo.git & &는/usr? :처럼 그냥 크론를 실행할 수 없습니다 어떤 이유가있다/bin/scp git_backup.tar.gz me @ other-server :/home/backup
가장 최근의 것을 사용할 수있는 다른 모든 사본에 문제가 발생하면 원래의 장소 인 tar -xzf를 사용하여 복제, 푸시, 당기는 등? 그것이 좋아야하는 것처럼 보인다. 그러나 나는 100 % 확실하지 않다. 참고 : 저는 git clone이나 --mirror를 사용하는 다른 답변을 보았습니다. 그러나 이것은보다 직관적 인 것처럼 보입니다. 그 대답이 더 좋을 것이라는 것을 나타내면 여전히 옵션입니다.
---------------- 편집 -----------------
여기에 내가 만들고 결국 스크립트입니다 :
#!/usr/bin/php -q
<?php
/**
* Backup git on this box and copy it around
*
* cron:
* 1 2 * * * /usr/bin/php /home/sysadmin/files/shared/git_backup.php REPO 2> /dev/null
*
* @package scripts
* @author Hans Anderson <[email protected]>
*/
list ($dir,) = explode ('/files/', __FILE__); require_once ("{$dir}/files/bootstrap.php");
$email = $cfg['GIT_BACKUP']['email_errors_to'];
$copy_hosts = explode(',', $cfg['GIT_BACKUP']['hosts']);
if (!isset ($argv[1])) exit;
$repo = $argv[1];
$date = date ('Y-m-d-H');
$user = `whoami`; $user = trim($user);
$repf = "/newdisk/git/{$repo}.git";
$bndl = "/newdisk/backup/{$repo}/git/git-{$repo}-{$date}.bndl";
chdir($repf);
$exec = "/usr/bin/git bundle create $bndl --all";
exec ("$exec", $error, $return);
if ($return <> 0) // bad
{
mail ($email, "{$user} GIT Backup Failure [{$repo}]!", __FILE__ . "\nFailure to dump.\nCmd: $exec\nError: $error");
}
foreach ($copy_hosts as $host)
{
$exec = "/usr/bin/scp -q {$bndl} [email protected]{$host}:/home/sysadmin/data/backup/$repo/git";
exec ($exec, $error, $return);
if ($return <> 0)
{
mail ($email, "{$user} GIT Backup Failure [{$repo}]!", __FILE__ . "\nFailure to copy to dbs1.\nCmd: $exec\nError: " . implode ("\n", $error) . "\n\nReturn:" . implode ("\n", $return));
}
}
좋은 답변 - 모두들, 그러나 git 번들 (그리고 테스트 해보기)을 들여다 보니, 지금 당장은 내 최선책 인 것 같습니다. 조금 실험 해보고 --mirror 옵션을 부차적으로 사용하겠습니다. 나는 또한 모든 것을 지금까지 타르 려하고 갈고리와 구성 물건, jik을 얻으 려합니다. – Hans