docs:git:backing_up_repository

backing up repository

  • do NOT use rsync
    • git is smarter about what needs copied and will be faster
    • a commit or other action could be in progress
  • you have a myproject directory containing the .git repository, and would like to back up the repository contents
  • create the backup repo
    cd /backup/destination
    git init --bare myproject.git
  • do the initial push of your project to the backup repo
    cd /myproject
    git push --all --force /backup/destination/myproject.git
  • in your local git repo, make a copy of the .git/hooks/post-commit file and modify it similar to this
    # assuming you have a mount point at /gitshare
    echo -e "backing up repo...\n";
    git push --all --force /backup/destination/myproject.git
  • you have a myproject directory containing the .git repository, and would like to back up the repository contents
  • clone your project as a “mirror”
    cd /backup/destination
    git clone --no-hardlinks --mirror /path/to/myproject backupfoldername
  • work, work, work
  • commit inside myproject
  • time to backup…go to the backup directory and “fetch” the project
    cd /backup/destination/backupfoldername
    git fetch
  • you have many projects that you want to backup, like to a usb drive
  • clone each project
    cd /path/to/your/usb/drive/destfolder
    git clone --mirror /project.git
  • create a shell script (i.e. pullall.sh) to loop through each project and fetch
    #!/bin/sh
    
    `which ls` -1d *.git | while read item;do
    echo -e "updating ${item}...\n"
    cd "${item}"
    git fetch --all --force
    cd ..
    done
  • run the script with ./pullall.sh (make sure it is executable: chmod 755 pullall.sh)
  • docs/git/backing_up_repository.txt
  • Last modified: 2010/05/28 11:28
  • by billh