summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2015-12-15 20:50:52 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2015-12-15 20:50:52 -0400
commit827220306c40e126116fbe72eeabb0082b51a33d (patch)
tree5bde4e4300dac67666212c813f284cae7306fd41
parent968e98a38c201ac1a3cd0ff1453ced078ed320a4 (diff)
parent5d56cbc3b96c1d80c33e9b914a977c839ccd0c73 (diff)
Merge branch 'master' of ssh://git-annex.branchable.com
-rw-r--r--doc/bugs/Low_disk_space_corrupts_state.mdwn61
-rw-r--r--doc/bugs/Low_disk_space_corrupts_state/comment_1_d8235498e2206c3b5284455e5c4182b9._comment20
-rw-r--r--doc/bugs/STANDARD__95__IA_for_S3_remote_not_working/comment_5_ebb7cc0e1c125765611014049d403d61._comment7
-rw-r--r--doc/bugs/git_annex_sync_deleted_a_bunch_of_files___40__not_expected__41__/comment_8_7b89c224ab6f79d406785fe751c241b6._comment77
-rw-r--r--doc/devblog/day_339_smudging_out_direct_mode/comment_6_ede48107675edfe40d5fdd3377553aa4._comment12
-rw-r--r--doc/forum/Can__39__t_upload_data_to_glacier_remote.mdwn55
-rw-r--r--doc/forum/Can__39__t_upload_data_to_glacier_remote/comment_1_cb18d5d63663f73a343c8972faadc83a._comment9
-rw-r--r--doc/forum/Can__39__t_upload_data_to_glacier_remote/comment_2_9b6a397d1c85da87481d36b8a4bd1ba6._comment252
-rw-r--r--doc/forum/Future_proofing___47___disaster_recovery_with_an_encrypted_special_remote/comment_2_9a9da0ad1538ba59e76a5c4f9fc7fcf7._comment18
-rw-r--r--doc/forum/Future_proofing___47___disaster_recovery_with_an_encrypted_special_remote/comment_3_27901f1c2c5de211f697972d9b21c104._comment11
-rw-r--r--doc/forum/avoid_rehashing_when_converting_existing_backups_into_new_remotes/comment_1_7d0b479244fefd933193d921adcd897c._comment8
-rw-r--r--doc/forum/avoid_rehashing_when_converting_existing_backups_into_new_remotes/comment_2_d42222ef94f4d409ac40e523f8211ffc._comment8
12 files changed, 538 insertions, 0 deletions
diff --git a/doc/bugs/Low_disk_space_corrupts_state.mdwn b/doc/bugs/Low_disk_space_corrupts_state.mdwn
new file mode 100644
index 000000000..ecdfc48a2
--- /dev/null
+++ b/doc/bugs/Low_disk_space_corrupts_state.mdwn
@@ -0,0 +1,61 @@
+### Please describe the problem.
+
+When there are low disk space left, changes in the annex repo are only semi updated, leaving the dir and git annex state out of sync, leaving error messages with "invalid objects" and "fatal: git-write-tree: error building trees".
+
+I ignored these errors, and kept on trying to copy over all the files to a remote disk, since I wanted a backup, which resultet in symlinks pointing to files which aren't there.
+
+Maybe git-annex should stop if it sees that it's not enough disk space to perform a certain operation? E.g. cache space needed for syncing.
+
+### What steps will reproduce the problem?
+
+I'm not certain about what command that created the issue, but i ran various commands:
+
+- `git annex sync EXTERNALREPO`
+- `git annex copy --to EXTERNALREPO`
+- `git annex unlock Videos/`
+- `git annex lock Videos/`
+
+My disk had 280MB left, and the repo were at a few GBs. Somewhere in between these commands, git-annex started producing a lot of error messages for various files.
+
+### What version of git-annex are you using? On what operating system?
+
+git-annex version: 5.20140717 (Fedora 23)
+
+### Please provide any additional information below.
+
+Unfortunately, I don't have the full transcript of my badly behaved commands. Instead I add some of the error messages:
+
+[[!format sh """
+# If you can, paste a complete transcript of the problem occurring here.
+# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log
+
+
+ $ git annex lock Videos/
+ error: invalid object 100644 56715f46d9256bdcef0cd387364818e597dc9f41 for '003/a56/SHA256-s23430--26dc3b33a5101e4ead217241a371b17f15e7a2f37bbcaedd0d35a0a1aa4eb9b0.log.cnk'
+ fatal: git-write-tree: error building trees
+ git-annex: failed to read sha from git write-tree
+
+ $ git annex sync
+ error: refs/remotes/remote_annex/synced/master does not point to a valid object!
+ error: refs/remotes/home/synced/master does not point to a valid object!
+ error: refs/remotes/work_annex/synced/master does not point to a valid object!
+ error: refs/remotes/home_annex/synced/master does not point to a valid object!
+ error: refs/remotes/home/synced/master does not point to a valid object!
+ error: refs/remotes/work_annex/synced/master does not point to a valid object!
+ error: Could not read bf3d6640fa32460032926ae6...
+ fatal: revision walk setup failed
+ error: Could not read 8cdec1808723971eaf30e32...
+ fatal: revision walk setup failed
+ (merging work/git-annex into git-annex...)
+ fatal: unable to read tree 21e0681190de239f41d...
+ (Recording state in git...)
+ error: invalid object 100644 56715f36d9256bdeff... for '003/a56/SHA256-s23430--2dc3b411e5ead...log.cnk'
+ fatal: git-write-tree: error building trees
+ git-annex: failed to read sha from git write-tree
+
+# End of transcript or log.
+"""]]
+
+### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
+
+It worked as a charm until my disk got full! (Maybe it is better to split it up in various, smaller repos, and sync them individually?)
diff --git a/doc/bugs/Low_disk_space_corrupts_state/comment_1_d8235498e2206c3b5284455e5c4182b9._comment b/doc/bugs/Low_disk_space_corrupts_state/comment_1_d8235498e2206c3b5284455e5c4182b9._comment
new file mode 100644
index 000000000..334a0fd94
--- /dev/null
+++ b/doc/bugs/Low_disk_space_corrupts_state/comment_1_d8235498e2206c3b5284455e5c4182b9._comment
@@ -0,0 +1,20 @@
+[[!comment format=mdwn
+ username="joakim.hovlandsvag@ad788ffa13d1ccbf03f2c485653900f8baa33950"
+ nickname="joakim.hovlandsvag"
+ subject="Repairing ignores disk space issues too"
+ date="2015-12-13T09:13:24Z"
+ content="""
+It seems that `git annex repair` also ignores such issues:
+
+ $ git annex repair
+ Running git fsck ...
+ Initialized empty Git repository in /tmp/tmprepo.0/.git/
+ Trying to recover missing objects from remote home.
+ Unpacking all pack files.
+ error: file write error (No space left on device)
+ fatal: unable to write sha1 file
+ Successfully recovered repository!
+ You should run \"git fsck\" to make sure, but it looks like everything was recovered ok.
+ ok
+
+"""]]
diff --git a/doc/bugs/STANDARD__95__IA_for_S3_remote_not_working/comment_5_ebb7cc0e1c125765611014049d403d61._comment b/doc/bugs/STANDARD__95__IA_for_S3_remote_not_working/comment_5_ebb7cc0e1c125765611014049d403d61._comment
new file mode 100644
index 000000000..73feda9a9
--- /dev/null
+++ b/doc/bugs/STANDARD__95__IA_for_S3_remote_not_working/comment_5_ebb7cc0e1c125765611014049d403d61._comment
@@ -0,0 +1,7 @@
+[[!comment format=mdwn
+ username="wsha.code+ga@b38779424f41c5701bbe5937340be43ff1474b2d"
+ subject="comment 5"
+ date="2015-12-12T05:28:51Z"
+ content="""
+Thanks for the clarification. I was referring to the Linux build. I might have been wrong about aws 0.13 being released. It is listed in the NixOS and Hackage package repos, but I don't see a 0.13.0 tag on the project's GitHub page, so maybe those other repos are packaging the nightly build of the master branch as version 0.13.0 while the final 0.13.0 hasn't been frozen yet. I will wait for the Debian repo to get updated (I could build it by hand but I like to rely on the package manager as I will otherwise forget to update the package in the future). It looks like Debian unstable lags the git repo tags by 1-2 months.
+"""]]
diff --git a/doc/bugs/git_annex_sync_deleted_a_bunch_of_files___40__not_expected__41__/comment_8_7b89c224ab6f79d406785fe751c241b6._comment b/doc/bugs/git_annex_sync_deleted_a_bunch_of_files___40__not_expected__41__/comment_8_7b89c224ab6f79d406785fe751c241b6._comment
new file mode 100644
index 000000000..943b9718e
--- /dev/null
+++ b/doc/bugs/git_annex_sync_deleted_a_bunch_of_files___40__not_expected__41__/comment_8_7b89c224ab6f79d406785fe751c241b6._comment
@@ -0,0 +1,77 @@
+[[!comment format=mdwn
+ username="yminus"
+ subject="comment 8"
+ date="2015-12-13T22:55:15Z"
+ content="""
+I think the problem in my case is that I had special characters in some file names which fat does not support.
+
+I tried to recover the git annex repo in direct mode using these steps:
+<pre>
+git push --force n900 master
+git checkout synced/master
+git push --force n900 synced/master
+git checkout master
+git annex unlock flac/Type_O_Negative/2003_Life_Is_Killing_Me/
+mv flac/Type_O_Negative/2003_Life_Is_Killing_Me/03.Less_Than_Zero_\(\<0\).flac flac/Type_O_Negative/2003_Life_Is_Killing_Me/03.Less_Than_Zero.flac
+git annex add flac/
+git commit -m \"Work around broken file systems\"
+git push --force n900 master
+git checkout synced/master
+git push --force n900 synced/master
+git checkout master
+git annex sync n900
+</pre>
+
+But now the last git annex sync creates a merge commit which only contains \"variants\" of the renamed files:
+
+<pre>
+ Merge remote-tracking branch 'refs/remotes/origin/synced/master' into annex/direct/master
+
+ # Conflicts:
+ # flac/Type_O_Negative/2003_Life_Is_Killing_Me/03.Less_Than_Zero.flac
+ # mp3/Type_O_Negative/2003_Life_Is_Killing_Me/03.Less_Than_Zero.mp3
+
+ flac/Type_O_Negative/2003_Life_Is_Killing_Me/03.Less_Than_Zero.variant-6467.flac
+index 0000000,c33ca87..c33ca87
+mode 000000,120000..120000
+
+ mp3/Type_O_Negative/2003_Life_Is_Killing_Me/03.Less_Than_Zero.variant-562b.mp3
+index 0000000,a247fc6..a247fc6
+mode 000000,120000..120000
+</pre>
+
+So the repo on n900 still does not contain all the files added since the last sync (git annex get fails for those files). At least now the sync does not delete files in my laptop repo any more.
+
+This is the current state:
+
+<pre>
+* 44dd9a8 (n900/annex/direct/master) Merge remote-tracking branch 'refs/remotes/origin/synced/master' into annex/direct/master
+|\
+| * 21df034 (HEAD -> master, tag: before_syncing_n900, nas/synced/master, n900/synced/master, n900/master, synced/master) Merge remote-tracking branch 'refs/remotes/nas/master'
+| |\
+| | * 4f61c44 (nas/master) Work around broken file systems
+| | * 85ab30f ADDED FILES
+| * | 92bc06e Work around broken file systmes (mp3)
+| |/
+* | a945a24 merge refs/heads/synced/master
+|\ \
+| |/
+| * 1236008 (origin/synced/master, origin/master) ADDED FILES
+| * 17c4f54 ADDED FILES
+| * 364d525 Merge remote-tracking branch 'refs/remotes/origin/master'
+| |\
+| | * c18f170 ADDED FILES
+| | * 9dd5668 ADDED FILES
+| * | c3280fc ADDED FILES
+| * | 2babe80 ADDED FILES
+| * | b964e29 ADDED FILES
+| * | 03f3bd1 ADDED FILES
+| * | 010a469 ADDED FILES
+| * | 8acf199 ADDED FILES
+| * | f2477bc Merge remote-tracking branch 'refs/remotes/origin/master'
+| |\ \
+| | |/
+| | * 121ffd1 ADDED FILES
+* | | dc88b8a git-annex in lars@lars-laptop:/run/media/lars/Nokia N900/.sounds/Musik
+</pre>
+"""]]
diff --git a/doc/devblog/day_339_smudging_out_direct_mode/comment_6_ede48107675edfe40d5fdd3377553aa4._comment b/doc/devblog/day_339_smudging_out_direct_mode/comment_6_ede48107675edfe40d5fdd3377553aa4._comment
new file mode 100644
index 000000000..d52b054e3
--- /dev/null
+++ b/doc/devblog/day_339_smudging_out_direct_mode/comment_6_ede48107675edfe40d5fdd3377553aa4._comment
@@ -0,0 +1,12 @@
+[[!comment format=mdwn
+ username="https://openid.stackexchange.com/user/27ceb3c5-0762-42b8-8f8a-ed21c284748f"
+ nickname="g"
+ subject="comment 6"
+ date="2015-12-11T22:58:22Z"
+ content="""
+Thanks for the quick reply (and all your work on this!)
+
+Interesting, that change to git does sound like it should be relatively small compared to the workarounds needed. But in any case, glad to hear you're thinking about the issue.
+
+Also curious what your thoughts are on the performance issues you had identified previously with using smudge/clean on larger repos. Do the changes in git 2.5 address all your concerns? Or are there still some cases where this will potentially result in significant slow-down?
+"""]]
diff --git a/doc/forum/Can__39__t_upload_data_to_glacier_remote.mdwn b/doc/forum/Can__39__t_upload_data_to_glacier_remote.mdwn
new file mode 100644
index 000000000..fbf95df7b
--- /dev/null
+++ b/doc/forum/Can__39__t_upload_data_to_glacier_remote.mdwn
@@ -0,0 +1,55 @@
+I'm trying to follow the directions on [this tips page](https://git-annex.branchable.com/tips/using_Amazon_Glacier/) to easily back up some large home videos to Glacier. I followed the steps and everything worked fine until the `git annex copy`, at which point it claimed it was successful but had uploaded 0 bytes, as well as dumping the usage message for `glacier-cli` at the terminal (without any error):
+
+ Emily $ git annex copy --to glacier README
+ copy README (gpg) (checking glacier...) (to glacier...)
+ 100% 0.0 B/s 0s
+ glacier <command> [args]
+
+ Commands
+ vaults - Operations with vaults
+ jobs - Operations with jobs
+ upload - Upload files to a vault. If the vault doesn't exits, it is
+ created
+
+ Common args:
+ --access_key - Your AWS Access Key ID. If not supplied, boto will
+ use the value of the environment variable
+ AWS_ACCESS_KEY_ID
+ --secret_key - Your AWS Secret Access Key. If not supplied, boto
+ will use the value of the environment variable
+ AWS_SECRET_ACCESS_KEY
+ --region - AWS region to use. Possible values: us-east-1, us-west-1,
+ us-west-2, ap-northeast-1, eu-west-1.
+ Default: us-east-1
+
+ Vaults operations:
+
+ List vaults:
+ glacier vaults
+
+ Jobs operations:
+
+ List jobs:
+ glacier jobs <vault name>
+
+ Uploading files:
+
+ glacier upload <vault name> <files>
+
+ Examples :
+ glacier upload pics *.jpg
+ glacier upload pics a.jpg b.jpg
+
+ ok
+ (Recording state in git...)
+
+Doing a `glacier vaults` also does not show any new vaults, and getting the usage message is obviously not normal.
+
+I tried doing a manual upload to a vault I already had sitting around from some years ago called `TVault`, and that looked to work fine:
+
+ Emily $ glacier upload TVault README
+ Uploading README to TVault... done. Vault returned ArchiveID [omitted]
+
+(The update date hasn't updated on the management console yet, but I understand that may take up to a day.)
+
+Does anyone know what's going on, or is there at least a way to get a useful error message to output?
diff --git a/doc/forum/Can__39__t_upload_data_to_glacier_remote/comment_1_cb18d5d63663f73a343c8972faadc83a._comment b/doc/forum/Can__39__t_upload_data_to_glacier_remote/comment_1_cb18d5d63663f73a343c8972faadc83a._comment
new file mode 100644
index 000000000..5c18f1927
--- /dev/null
+++ b/doc/forum/Can__39__t_upload_data_to_glacier_remote/comment_1_cb18d5d63663f73a343c8972faadc83a._comment
@@ -0,0 +1,9 @@
+[[!comment format=mdwn
+ username="basak"
+ subject="comment 1"
+ date="2015-12-13T21:35:59Z"
+ content="""
+Sounds like you're running the boto glacier command rather than the glacier-cli tool. Unfortunately they have the same name (my intention was to deprecate the boto tool but boto upstream deprecated boto entirely instead). The current plan is to rename glacier-cli to glcr, but I haven't got round to doing that yet.
+
+Try making sure that \"glacier\" runs the glacier-cli tool rather than boto's glacier.
+"""]]
diff --git a/doc/forum/Can__39__t_upload_data_to_glacier_remote/comment_2_9b6a397d1c85da87481d36b8a4bd1ba6._comment b/doc/forum/Can__39__t_upload_data_to_glacier_remote/comment_2_9b6a397d1c85da87481d36b8a4bd1ba6._comment
new file mode 100644
index 000000000..321d4cc37
--- /dev/null
+++ b/doc/forum/Can__39__t_upload_data_to_glacier_remote/comment_2_9b6a397d1c85da87481d36b8a4bd1ba6._comment
@@ -0,0 +1,252 @@
+[[!comment format=mdwn
+ username="scorchgeek"
+ subject="Indeed"
+ date="2015-12-13T22:30:47Z"
+ content="""
+Nice catch! I couldn't find any install option for `glacier-cli`, so I just added a symlink to the source distribution and figured that would take care of it.
+
+ Emily $ ls /usr/bin -l | grep glacier
+ lrwxrwxrwx 1 root root 38 Dec 11 16:19 glacier -> /home/soren/bin/glacier-cli/glacier.py
+
+But:
+
+ Emily $ which glacier
+ /usr/local/bin/glacier
+
+Oops. I changed the location of the symlink to somewhere earlier in the path, uninited and reinited the repository, and it uploaded the README.
+
+Unfortunately, now I'm getting a different error, some kind of Unicode issue, when I try to upload one of the files I actually want to back up:
+
+ Emily $ git annex add family-videos/Tape01.mpg
+ add family-videos/Tape01.mpg ok
+ (Recording state in git...)
+
+ Emily $ git commit
+ [master 5af0257] add tape01 as test
+ 1 file changed, 1 insertion(+)
+ create mode 120000 family-videos/Tape01.mpg
+
+ Emily $ git annex copy --to glacier
+ copy family-videos/Tape01.mpg (gpg) (checking glacier...) (to glacier...)
+ 0% 8.1MB/s 11m32sTraceback (most recent call last):
+ File \"/home/soren/bin/glacier\", line 730, in <module>
+ App().main()
+ File \"/home/soren/bin/glacier\", line 716, in main
+ self.args.func()
+ File \"/home/soren/bin/glacier\", line 498, in archive_upload
+ file_obj=self.args.file, description=name)
+ File \"/usr/local/lib/python2.7/dist-packages/boto/glacier/vault.py\", line 177, in create_archive_from_file
+ writer.write(data)
+ File \"/usr/local/lib/python2.7/dist-packages/boto/glacier/writer.py\", line 219, in write
+ self.partitioner.write(data)
+ [...many more things in boto]
+ File \"/usr/lib/python2.7/httplib.py\", line 979, in request
+ self._send_request(method, url, body, headers)
+ File \"/usr/lib/python2.7/httplib.py\", line 1013, in _send_request
+ self.endheaders(body)
+ File \"/usr/lib/python2.7/httplib.py\", line 975, in endheaders
+ self._send_output(message_body)
+ File \"/usr/lib/python2.7/httplib.py\", line 833, in _send_output
+ msg += message_body
+ UnicodeDecodeError: 'ascii' codec can't decode byte 0x8c in position 0: ordinal not in range(128)
+ gpg: [stdout]: write error: Broken pipe
+ gpg: DBG: deflate: iobuf_write failed
+ gpg: build_packet failed: file write error
+ gpg: [stdout]: write error: Broken pipe
+ gpg: iobuf_flush failed on close: file write error
+ gpg: symmetric encryption of `[stdin]' failed: file write error
+ git-annex: fd:14: hPutBuf: resource vanished (Broken pipe)
+ failed
+ git-annex: copy: 1 failed
+
+Here's my complete session setting up the repository, in case it contains other useful information:
+
+ Emily 1020 [/media/backup/Videos]$ git init
+ Initialized empty Git repository in /media/backup/Videos/.git/
+ Emily 1021 [/media/backup/Videos](.)$ git remote add origin https://[myusername]@bitbucket.org/[myusername]/[myreponame].git
+ Emily 1022 [/media/backup/Videos](.)$ git push
+ fatal: The current branch master has no upstream branch.
+ To push the current branch and set the remote as upstream, use
+
+ git push --set-upstream origin master
+
+ Emily 1023 [/media/backup/Videos](.)$ git push -u origin master
+ error: src refspec master does not match any.
+ error: failed to push some refs to [URL]
+ Emily 1024 [/media/backup/Videos](.)$ git add README
+ Emily 1025 [/media/backup/Videos](@)$ ls
+ family-videos README
+ Emily 1025 [/media/backup/Videos](@)$ git push -u origin master^C
+ Emily 1025 [/media/backup/Videos](@)$ git commit -am \"test commit\"
+ [master (root-commit) 03fb2a7] test commit
+ 1 file changed, 1 insertion(+)
+ create mode 100644 README
+ Emily 1026 [/media/backup/Videos](.)$ git push -u origin master
+ Counting objects: 3, done.
+ Writing objects: 100% (3/3), 223 bytes | 0 bytes/s, done.
+ Total 3 (delta 0), reused 0 (delta 0)
+ remote:
+ remote: We're changing our IP addresses on 15 December 2015 at 00:00 UTC.
+ remote: Please make sure your firewalls are up to date:
+ remote: https://blog.bitbucket.org/?p=2677
+ To https://[myusername]@bitbucket.org/[myusername]/[myreponame].git
+ * [new branch] master -> master
+ Branch master set up to track remote branch master from origin.
+ Emily 1027 [/media/backup/Videos](.)$ git annex init
+ init ok
+ (Recording state in git...)
+ Emily 1028 [/media/backup/Videos](.)$ git annex --fast initremote glacier type=glacier encryption=hybrid keyid=[my GPG key ID]
+
+ Remote origin not usable by git-annex; setting annex-ignore
+ initremote glacier (encryption setup) (hybrid cipher with gpg key [hybrid key ID]) ok
+ (Recording state in git...)
+ Emily 1029 [/media/backup/Videos](.)$ git annex enableremote glacier
+ enableremote glacier (gpg) (encryption update) (hybrid cipher with gpg key [hybrid key ID]) ok
+ (Recording state in git...)
+ Emily 1030 [/media/backup/Videos](.)$ git annex copy README --to glacier
+ Emily 1031 [/media/backup/Videos](.)$ git annex sync
+ commit ok
+ pull origin
+ ok
+ push origin
+ Counting objects: 13, done.
+ Delta compression using up to 4 threads.
+ Compressing objects: 100% (10/10), done.
+ Writing objects: 100% (12/12), 2.15 KiB | 0 bytes/s, done.
+ Total 12 (delta 3), reused 0 (delta 0)
+ remote:
+ remote: We're changing our IP addresses on 15 December 2015 at 00:00 UTC.
+ remote: Please make sure your firewalls are up to date:
+ remote: https://blog.bitbucket.org/?p=2677
+ To [repository URL]
+ * [new branch] git-annex -> synced/git-annex
+ * [new branch] master -> synced/master
+ ok
+ Emily 1032 [/media/backup/Videos](.)$ git annex status
+ ? family-videos/Tape01.mpg
+ ? family-videos/Tape02.mpg
+ ? family-videos/Tape03.mpg
+ ? family-videos/Tape04.mpg
+ ? family-videos/Tape05.mpg
+ ? family-videos/Tape06.mpg
+ ? family-videos/Tape07.mpg
+ ? family-videos/Tape08.mpg
+ ? family-videos/Tape09.mpg
+ ? family-videos/Tape10.mpg
+ ? family-videos/Tape11.mpg
+ ? family-videos/Tape12.mpg
+ ? family-videos/Tape13.mpg
+ ? family-videos/Tape14.mpg
+ ? family-videos/Tape15.mpg
+ ? family-videos/Tape16.mpg
+ Emily 1033 [/media/backup/Videos](.)$ gitk
+ Emily 1034 [/media/backup/Videos](.)$ git annex copy README --to glacier^C
+ Emily 1034 [/media/backup/Videos](.)$ git annex add family-videos/Tap
+ ...01.mpg ...04.mpg ...07.mpg ...10.mpg ...13.mpg ...16.mpg
+ ...02.mpg ...05.mpg ...08.mpg ...11.mpg ...14.mpg
+ ...03.mpg ...06.mpg ...09.mpg ...12.mpg ...15.mpg
+ Emily 1034 [/media/backup/Videos](.)$ git annex add family-videos/Tape01.mpg
+ add family-videos/Tape01.mpg ok
+ (Recording state in git...)
+ Emily 1035 [/media/backup/Videos](@)$ git commit
+ [master 5af0257] add tape01 as test
+ 1 file changed, 1 insertion(+)
+ create mode 120000 family-videos/Tape01.mpg
+ Emily 1036 [/media/backup/Videos](+)$ git annex copy --to glacier
+ copy family-videos/Tape01.mpg (gpg) (checking glacier...) (to glacier...)
+ 0% 8.1MB/s 11m32sTraceback (most recent call last):
+ File \"/home/soren/bin/glacier\", line 730, in <module>
+ App().main()
+ File \"/home/soren/bin/glacier\", line 716, in main
+ self.args.func()
+ File \"/home/soren/bin/glacier\", line 498, in archive_upload
+ file_obj=self.args.file, description=name)
+ File \"/usr/local/lib/python2.7/dist-packages/boto/glacier/vault.py\", line 177, in create_archive_from_file
+ writer.write(data)
+ File \"/usr/local/lib/python2.7/dist-packages/boto/glacier/writer.py\", line 219, in write
+ self.partitioner.write(data)
+ File \"/usr/local/lib/python2.7/dist-packages/boto/glacier/writer.py\", line 61, in write
+ self._send_part()
+ File \"/usr/local/lib/python2.7/dist-packages/boto/glacier/writer.py\", line 75, in _send_part
+ self.send_fn(part)
+ File \"/usr/local/lib/python2.7/dist-packages/boto/glacier/writer.py\", line 222, in _upload_part
+ self.uploader.upload_part(self.next_part_index, part_data)
+ File \"/usr/local/lib/python2.7/dist-packages/boto/glacier/writer.py\", line 129, in upload_part
+ content_range, part_data)
+ File \"/usr/local/lib/python2.7/dist-packages/boto/glacier/layer1.py\", line 1279, in upload_part
+ response_headers=response_headers)
+ File \"/usr/local/lib/python2.7/dist-packages/boto/glacier/layer1.py\", line 114, in make_request
+ data=data)
+ File \"/usr/local/lib/python2.7/dist-packages/boto/connection.py\", line 1071, in make_request
+ retry_handler=retry_handler)
+ File \"/usr/local/lib/python2.7/dist-packages/boto/connection.py\", line 943, in _mexe
+ request.body, request.headers)
+ File \"/usr/lib/python2.7/httplib.py\", line 979, in request
+ self._send_request(method, url, body, headers)
+ File \"/usr/lib/python2.7/httplib.py\", line 1013, in _send_request
+ self.endheaders(body)
+ File \"/usr/lib/python2.7/httplib.py\", line 975, in endheaders
+ self._send_output(message_body)
+ File \"/usr/lib/python2.7/httplib.py\", line 833, in _send_output
+ msg += message_body
+ UnicodeDecodeError: 'ascii' codec can't decode byte 0x8c in position 0: ordinal not in range(128)
+ gpg: [stdout]: write error: Broken pipe
+ gpg: DBG: deflate: iobuf_write failed
+ gpg: build_packet failed: file write error
+ gpg: [stdout]: write error: Broken pipe
+ gpg: iobuf_flush failed on close: file write error
+ gpg: symmetric encryption of `[stdin]' failed: file write error
+ git-annex: fd:15: hPutBuf: resource vanished (Broken pipe)
+ failed
+ git-annex: copy: 1 failed
+ Emily 1037 [/media/backup/Videos](+)$ git annex copy --to glacier
+ copy family-videos/Tape01.mpg (gpg) (checking glacier...) (to glacier...)
+ 0% 8.1MB/s 11m32sTraceback (most recent call last):
+ File \"/home/soren/bin/glacier\", line 730, in <module>
+ App().main()
+ File \"/home/soren/bin/glacier\", line 716, in main
+ self.args.func()
+ File \"/home/soren/bin/glacier\", line 498, in archive_upload
+ file_obj=self.args.file, description=name)
+ File \"/usr/local/lib/python2.7/dist-packages/boto/glacier/vault.py\", line 177, in create_archive_from_file
+ writer.write(data)
+ File \"/usr/local/lib/python2.7/dist-packages/boto/glacier/writer.py\", line 219, in write
+ self.partitioner.write(data)
+ File \"/usr/local/lib/python2.7/dist-packages/boto/glacier/writer.py\", line 61, in write
+ self._send_part()
+ File \"/usr/local/lib/python2.7/dist-packages/boto/glacier/writer.py\", line 75, in _send_part
+ self.send_fn(part)
+ File \"/usr/local/lib/python2.7/dist-packages/boto/glacier/writer.py\", line 222, in _upload_part
+ self.uploader.upload_part(self.next_part_index, part_data)
+ File \"/usr/local/lib/python2.7/dist-packages/boto/glacier/writer.py\", line 129, in upload_part
+ content_range, part_data)
+ File \"/usr/local/lib/python2.7/dist-packages/boto/glacier/layer1.py\", line 1279, in upload_part
+ response_headers=response_headers)
+ File \"/usr/local/lib/python2.7/dist-packages/boto/glacier/layer1.py\", line 114, in make_request
+ data=data)
+ File \"/usr/local/lib/python2.7/dist-packages/boto/connection.py\", line 1071, in make_request
+ retry_handler=retry_handler)
+ File \"/usr/local/lib/python2.7/dist-packages/boto/connection.py\", line 943, in _mexe
+ request.body, request.headers)
+ File \"/usr/lib/python2.7/httplib.py\", line 979, in request
+ self._send_request(method, url, body, headers)
+ File \"/usr/lib/python2.7/httplib.py\", line 1013, in _send_request
+ self.endheaders(body)
+ File \"/usr/lib/python2.7/httplib.py\", line 975, in endheaders
+ self._send_output(message_body)
+ File \"/usr/lib/python2.7/httplib.py\", line 833, in _send_output
+ msg += message_body
+ UnicodeDecodeError: 'ascii' codec can't decode byte 0x8c in position 0: ordinal not in range(128)
+ gpg: [stdout]: write error: Broken pipe
+ gpg: DBG: deflate: iobuf_write failed
+ gpg: build_packet failed: file write error
+ gpg: [stdout]: write error: Broken pipe
+ gpg: iobuf_flush failed on close: file write error
+ gpg: symmetric encryption of `[stdin]' failed: file write error
+ git-annex: fd:14: hPutBuf: resource vanished (Broken pipe)
+ failed
+ git-annex: copy: 1 failed
+ Emily 1037 [/media/backup/Videos](+)$
+
+Thanks a lot for your help!
+"""]]
diff --git a/doc/forum/Future_proofing___47___disaster_recovery_with_an_encrypted_special_remote/comment_2_9a9da0ad1538ba59e76a5c4f9fc7fcf7._comment b/doc/forum/Future_proofing___47___disaster_recovery_with_an_encrypted_special_remote/comment_2_9a9da0ad1538ba59e76a5c4f9fc7fcf7._comment
new file mode 100644
index 000000000..ff35541ec
--- /dev/null
+++ b/doc/forum/Future_proofing___47___disaster_recovery_with_an_encrypted_special_remote/comment_2_9a9da0ad1538ba59e76a5c4f9fc7fcf7._comment
@@ -0,0 +1,18 @@
+[[!comment format=mdwn
+ username="wsha.code+ga@b38779424f41c5701bbe5937340be43ff1474b2d"
+ subject="comment 2"
+ date="2015-12-12T10:42:46Z"
+ content="""
+Thanks for the response.
+
+With `pubkey` encryption, I am able to decrypt the remote's files normally using just `gpg --decrypt` with the public key used to encrypt them in my keyring. One thing I don't understand about `pubkey` encryption: what is in the `cipher=` entry in `remote.log` after the 256 bytes representing the HMAC cipher? The `gpg` key pair is used for encryption, so there is no encryption cipher to put in `remote.log` after the HMAC cipher, I would have thought.
+
+I understand the basic encryption set up, but I don't know how to use `gpg` to work with a raw cipher or raw encrypted text. For example with `pubkey` encryption, my interpretation is that the `cipher=` entry in `remote.log` is encrypted with the public key, but I can't just pass teh entry to `gpg --decrypt` because `gpg` expects the encrypted input to be formatted in a way that specifies which key to use to decrypt. Otherwise it says `gpg: no valid OpenPGP data found.` Similarly for `shared` encryption, I don't see how to pass the second half of the `remote.log` `cipher=` entry to `gpg` to decrypt the remote's files.
+
+I am also having trouble generating the special remote's keys. I created a `directory` remote with `shared` encryption (so that the `cipher=` entry in `remote.log` would not be encrypted). Then I added one file called `tmp.txt` which was stored in the annex as `SHA256E-s9--9c73fdec185d79405f58fc8b4e0ac22fa5ed2de7b7611a61b37606c905509650.txt` I did `git checkout git-annex -- remote.log` and then tried the following:
+
+ echo -n \"SHA256E-s9--9c73fdec185d79405f58fc8b4e0ac22fa5ed2de7b7611a61b37606c905509650.txt\" | openssl dgst -sha1 -hmac $(echo -n $(grep -oP 'cipher\=.*? ' remote.log | sed 's/cipher=//') | base64 -d | xxd -p -l 256 -c 256) -macopt hexkey:string`
+
+but the output does not match the GPGHMACSHA1 file name in the remote, and I don't understand why. I tried other variations as well (dropping the `.txt` or the SHA256E-s9--` prefix) but they did not work either.
+
+"""]]
diff --git a/doc/forum/Future_proofing___47___disaster_recovery_with_an_encrypted_special_remote/comment_3_27901f1c2c5de211f697972d9b21c104._comment b/doc/forum/Future_proofing___47___disaster_recovery_with_an_encrypted_special_remote/comment_3_27901f1c2c5de211f697972d9b21c104._comment
new file mode 100644
index 000000000..fe0187145
--- /dev/null
+++ b/doc/forum/Future_proofing___47___disaster_recovery_with_an_encrypted_special_remote/comment_3_27901f1c2c5de211f697972d9b21c104._comment
@@ -0,0 +1,11 @@
+[[!comment format=mdwn
+ username="wsha.code+ga@b38779424f41c5701bbe5937340be43ff1474b2d"
+ subject="comment 3"
+ date="2015-12-14T12:03:22Z"
+ content="""
+Small update: I have gotten the HMAC and decryption steps to work for shared encryption. I didn't figure out what was wrong with my HMAC command above yet, but I was able to reproduce the special remote's keys in Python using the `hmac` and `hashlib` libraries. I was trying to hash the correct string in the comment above (the full key with the `SHA...` prefix and the file extension suffix). For decryption, I used `gpg` on the encrypted file in the special remote and passed it the cipher from `remote.log` with the first 256 bytes removed as the passphrase (in the format returned by `base64.b64decode()` in Python).
+
+I still need to figure out how to decrypt the ciphers for `pubkey` and `hybrid`.
+
+I will try to put together a tip with the steps needed to reproduce special remote keys and to decrypt special remote files using only command line tools after that (assuming I can translate the Python steps back to command line tools; otherwise part of the steps will be in Python).
+"""]]
diff --git a/doc/forum/avoid_rehashing_when_converting_existing_backups_into_new_remotes/comment_1_7d0b479244fefd933193d921adcd897c._comment b/doc/forum/avoid_rehashing_when_converting_existing_backups_into_new_remotes/comment_1_7d0b479244fefd933193d921adcd897c._comment
new file mode 100644
index 000000000..538a070ed
--- /dev/null
+++ b/doc/forum/avoid_rehashing_when_converting_existing_backups_into_new_remotes/comment_1_7d0b479244fefd933193d921adcd897c._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://me.yahoo.com/a/ZF7p46cPmpWtb9zvA8iTitPmiQ--#eb014"
+ nickname="Jason"
+ subject="I'm also having this issue"
+ date="2015-12-14T03:17:58Z"
+ content="""
+I have the exact same issue: two copies of photos and videos that I have been using rsync to maintain. Converted one disk to git-annex, cloned the repo and moved .git/ into the second but can't seem to find a fast way to move the files to the correct hash id in the annex dir and create the symlinks. I'm thinking it might be best to just do a `git init; git annex init; git annex add .; git commit` then add the remotes in both directions and \"sync\".
+"""]]
diff --git a/doc/forum/avoid_rehashing_when_converting_existing_backups_into_new_remotes/comment_2_d42222ef94f4d409ac40e523f8211ffc._comment b/doc/forum/avoid_rehashing_when_converting_existing_backups_into_new_remotes/comment_2_d42222ef94f4d409ac40e523f8211ffc._comment
new file mode 100644
index 000000000..bfd8066ac
--- /dev/null
+++ b/doc/forum/avoid_rehashing_when_converting_existing_backups_into_new_remotes/comment_2_d42222ef94f4d409ac40e523f8211ffc._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://me.yahoo.com/a/ZF7p46cPmpWtb9zvA8iTitPmiQ--#eb014"
+ nickname="Jason"
+ subject="It worked"
+ date="2015-12-14T04:46:46Z"
+ content="""
+The above process just completed. Of course it took a while to hash and create symlinks for the 20K+ files. The initial sync caused an expected \"Warning: no common commits\" however since the symlinks all pointed at the exact same hashed filenames there was nothing to merge. The sync did take several minutes, but it was much shorter than copying 120GB. I hope this helps someone else in the future.
+"""]]