I have a server on a network (SRV1), several clients (CLI-N) on another and a archive repo on AWS Glacier. CLIs can access SRV1, but SRV1 cannot access CLIs network. I'd like to use git-annex to synchronize files between clients and archival on Glacier.

My current setup:

  • SRV1 contains:
    • transfer repository (T1)
    • glacier archive repo (G1)
  • CLI-01 contains:
    • user files repo (U1)
    • transfer repository (T1)
  • CLI-02 contains:
    • user files repo (U1)
    • transfer repository (T1)
  • CLI-N (...)

  • OBS:

    • SRV1 uses aws tools and glacier-cli to access Glacier
    • I would rather not to have to install aws tools & glacier-cli on client machines
    • CLIs use ssh/rsync with secret key to access SRV1

I would like that T1would serve as a gateway for a) synchronizing user files amongst clients; a.1) including moving and dropping files moved to archive by other clients; b) send archive files to G1; and c) get files from G1 and deliver to clients when content is moved out of archive.

As is seem close to working, but when a CLI pulls a file out of archive the recovery processes (c) fails. I expected transfer to fetch the file and then CLI would sync eventually, but does not seem to happen.

Is this even possible with this setup? If not, what changes would you recommend for the scenario above to work?