This commit is contained in:
parent
7e563243ff
commit
65847905ca
1 changed files with 73 additions and 0 deletions
|
@ -0,0 +1,73 @@
|
|||
Hello,
|
||||
|
||||
I use git annex to sync files between my home linux server and my mac os laptop (macbook).
|
||||
This is a report about some troubles I had recovering git-annexed files from the macbook hard-drive.
|
||||
|
||||
The laptop had some hardware failure, so I bought another laptop (this time running linux),
|
||||
and plugged the macbook hard drive on yet another linux computer to recover the data (some files which were
|
||||
added to the macbook annex but never synchronized to the server):
|
||||
|
||||
* mount the hfsplus FS as read-only
|
||||
* cp -a (as root) the annex to /home/seb/macbook
|
||||
* use git annex as usual (from the linux computer) to push the files to the linux server.
|
||||
|
||||
Later on, I noticed that some files were missing (for instance "Le retour du printemps.mp4").
|
||||
I eventually understood that it was related to HFS+ being case-insensitive (case-preserving. actually), and that by copying the annex to the linux partition I lost that property.
|
||||
|
||||
here are commands which I run from the linux computer to reproduce the issue:
|
||||
|
||||
$ cd /home/seb/macbook
|
||||
$ git annex version
|
||||
git-annex version: 5.20140412ubuntu1
|
||||
$ git annex whereis "public/Videos/Documentaries/Nature/Le retour du printemps.mp4"
|
||||
whereis public/Videos/Documentaries/Nature/Le retour du printemps.mp4 (1 copy)
|
||||
18b9c2cc-e3c1-4002-a0a2-7e07782fae2c -- here (navimac/annex)
|
||||
|
||||
Trying to copy the file to the linux server
|
||||
|
||||
$ git annex copy "public/Videos/Documentaries/Nature/Le retour du printemps.mp4" --to origin ; echo $?
|
||||
0
|
||||
|
||||
Here git-annex did not copy anything, but reported success, maybe a bug.
|
||||
Fsck does account the issue:
|
||||
|
||||
$ git annex fsck "public/Videos/Documentaries/Nature/Le retour du printemps.mp4"
|
||||
fsck public/Videos/Documentaries/Nature/Le retour du printemps.mp4 (fixing location log)
|
||||
** Based on the location log, public/Videos/Documentaries/Nature/Le retour du printemps.mp4
|
||||
** was expected to be present, but its content is missing.
|
||||
** No known copies exist of public/Videos/Documentaries/Nature/Le retour du printemps.mp4
|
||||
failed
|
||||
git-annex: fsck: 1 failed
|
||||
|
||||
It turn out the file is there, but in gm/29 instead of gM/29:
|
||||
|
||||
$ ls -l "public/Videos/Documentaries/Nature/Le retour du printemps.mp4"
|
||||
lrwxrwxrwx 1 seb root 214 Apr 17 2017 public/Videos/Documentaries/Nature/Le retour du printemps.mp4 -> ../../../../.git/annex/objects/gM/29/SHA256E-s915126032--79eb20cad1b56adf4831b8a665b02c7de68aaaa4c9ca424a5a90e288abcec2aa.mp4/SHA256E-s915126032--79eb20cad1b56adf4831b8a665b02c7de68aaaa4c9ca424a5a90e288abcec2aa.mp4
|
||||
$ ls -l .git/annex/objects/g{M,m}/29/SHA256E-s915126032--79eb20cad1b56adf4831b8a665b02c7de68aaaa4c9ca424a5a90e288abcec2aa.mp4/SHA256E-s915126032--79eb20cad1b56adf4831b8a665b02c7de68aaaa4c9ca424a5a90e288abcec2aa.mp4
|
||||
ls: cannot access .git/annex/objects/gM/29/SHA256E-s915126032--79eb20cad1b56adf4831b8a665b02c7de68aaaa4c9ca424a5a90e288abcec2aa.mp4/SHA256E-s915126032--79eb20cad1b56adf4831b8a665b02c7de68aaaa4c9ca424a5a90e288abcec2aa.mp4: No such file or directory
|
||||
-r--r--r-- 1 seb root 915126032 Apr 17 2017 .git/annex/objects/gm/29/SHA256E-s915126032--79eb20cad1b56adf4831b8a665b02c7de68aaaa4c9ca424a5a90e288abcec2aa.mp4/SHA256E-s915126032--79eb20cad1b56adf4831b8a665b02c7de68aaaa4c9ca424a5a90e288abcec2aa.mp4
|
||||
|
||||
I think that if ran the git annex from the hfsplus partition directly (ie. not copying the annex to /home/seb/macbook), it would have worked.
|
||||
|
||||
Moving the file where git annex expects to find it solves it all:
|
||||
|
||||
$ mkdir .git/annex/objects/gM
|
||||
$ mv .git/annex/objects/gm/29 .git/annex/objects/gM/
|
||||
$ git annex fsck "public/Videos/Documentaries/Nature/Le retour du printemps.mp4"
|
||||
fsck public/Videos/Documentaries/Nature/Le retour du printemps.mp4 (fixing location log) (checksum...)
|
||||
ok
|
||||
(Recording state in git...)
|
||||
|
||||
$ git annex copy "public/Videos/Documentaries/Nature/Le retour du printemps.mp4" --to origin ; echo $?
|
||||
copy public/Videos/Documentaries/Nature/Le retour du printemps.mp4 (checking origin...)
|
||||
seb@192.168.0.1's password:
|
||||
(to origin...)
|
||||
SHA256E-s915126032--79eb20cad1b56adf4831b8a665b02c7de68aaaa4c9ca424a5a90e288abcec2aa.mp4
|
||||
915,126,032 100% 3.44MB/s 0:04:13 (xfr#1, to-chk=0/1)
|
||||
ok
|
||||
(Recording state in git...)
|
||||
0
|
||||
|
||||
Maybe I could instead have used cpiofs to avoid renaming files. (But I have less than 10 files to rename anyway).
|
||||
|
||||
I learned a lot about git annex today! Thank you again fot git-annex.
|
Loading…
Reference in a new issue