docs: def migrate_file(src_id, location_name, post_fixity_check=False):
      """Task to migrate a file instance to a new location.
  
      .. note:: If something goes wrong during the content copy, the destination
          file instance is removed.
  
      :param src_id: The :class:`invenio_files_rest.models.FileInstance` ID.
      :param location_name: Where to migrate the file.
      :param post_fixity_check: Verify checksum after migration.
          (Default: ``False``)
      """
      location = Location.get_by_name(location_name)
      f_src = FileInstance.get(src_id)
  
      # Create destination
      f_dst = FileInstance.create()
      db.session.commit()
  
      try:
          # Copy contents
          f_dst.copy_contents(
              f_src,
              progress_callback=progress_updater,
              default_location=location.uri,
          )
          db.session.commit()
      except Exception:
          # Remove destination file instance if an error occurred.
          db.session.delete(f_dst)
          db.session.commit()
          raise
  
      # Update all objects pointing to file.
      ObjectVersion.relink_all(f_src, f_dst)
      db.session.commit()
  
      # Start a fixity check
      if post_fixity_check:
          verify_checksum.delay(str(f_dst.id))