git-annex/ tips/ migrating data to a new backend

Maybe you started out using the SHA1 backend, and have now configured git-annex to use SHA256. But files you added to the annex before still use the SHA1 backend. There is a simple command that can migrate that data:

    # git annex migrate my_cool_big_file
    migrate my_cool_big_file (checksum...) ok

This stages a change to the file, which you can `git commit` like any other change.

You can only migrate files whose content is currently available. Other files will be skipped.

## distributed migration

When you pull changes into your repository that include migration of files, your repository then needs to be updated to follow the migration.

    # git-annex migrate --update
    migrate my_cool_big_file (checksum...) ok

This is done automatically by commands like `git-annex pull`.

## unused old content

After migrating a file to a new backend, the old content in the old backend will still be present. That is necessary because multiple files can point to the same content. The `git annex unused` subcommand can be used to clear up that detritus later. Note that hard links are used, to avoid wasting disk space.

Comments on this page are closed.