Skip to content

More user friendly message if repository is on read-only storage #202

@bjornfor

Description

@bjornfor

First of all, thanks for this awesome backup software! I am amazed how quick and efficient it is :-)

But it gives rather poor user feedback if the repository is on (remote) read-only storage:

$ sudo attic create "[email protected]:/media/3tb/backups/backup.attic::$(hostname)-$(date +%Y%m%dT%H%M%S)" /
Traceback (most recent call last):
  File "/nix/store/b55s23vqkxv3x415999ccnv2w4ri8wqn-attic-0.14/bin/.attic-wrapped", line 4, in <module>
    main()
  File "/nix/store/b55s23vqkxv3x415999ccnv2w4ri8wqn-attic-0.14/lib/python3.4/site-packages/attic/archiver.py", line 727, in main
    exit_code = archiver.run(sys.argv[1:])
  File "/nix/store/b55s23vqkxv3x415999ccnv2w4ri8wqn-attic-0.14/lib/python3.4/site-packages/attic/archiver.py", line 717, in run
    return args.func(args)
  File "/nix/store/b55s23vqkxv3x415999ccnv2w4ri8wqn-attic-0.14/lib/python3.4/site-packages/attic/archiver.py", line 128, in do_create
    self._process(archive, cache, args.excludes, args.exclude_caches, skip_inodes, path, restrict_dev)
  File "/nix/store/b55s23vqkxv3x415999ccnv2w4ri8wqn-attic-0.14/lib/python3.4/site-packages/attic/archiver.py", line 177, in _process
    os.path.join(path, filename), restrict_dev)
  File "/nix/store/b55s23vqkxv3x415999ccnv2w4ri8wqn-attic-0.14/lib/python3.4/site-packages/attic/archiver.py", line 177, in _process
    os.path.join(path, filename), restrict_dev)
  File "/nix/store/b55s23vqkxv3x415999ccnv2w4ri8wqn-attic-0.14/lib/python3.4/site-packages/attic/archiver.py", line 177, in _process
    os.path.join(path, filename), restrict_dev)
  File "/nix/store/b55s23vqkxv3x415999ccnv2w4ri8wqn-attic-0.14/lib/python3.4/site-packages/attic/archiver.py", line 177, in _process
    os.path.join(path, filename), restrict_dev)
  File "/nix/store/b55s23vqkxv3x415999ccnv2w4ri8wqn-attic-0.14/lib/python3.4/site-packages/attic/archiver.py", line 177, in _process
    os.path.join(path, filename), restrict_dev)
  File "/nix/store/b55s23vqkxv3x415999ccnv2w4ri8wqn-attic-0.14/lib/python3.4/site-packages/attic/archiver.py", line 177, in _process
    os.path.join(path, filename), restrict_dev)
  File "/nix/store/b55s23vqkxv3x415999ccnv2w4ri8wqn-attic-0.14/lib/python3.4/site-packages/attic/archiver.py", line 177, in _process
    os.path.join(path, filename), restrict_dev)
  File "/nix/store/b55s23vqkxv3x415999ccnv2w4ri8wqn-attic-0.14/lib/python3.4/site-packages/attic/archiver.py", line 177, in _process
    os.path.join(path, filename), restrict_dev)
  File "/nix/store/b55s23vqkxv3x415999ccnv2w4ri8wqn-attic-0.14/lib/python3.4/site-packages/attic/archiver.py", line 177, in _process
    os.path.join(path, filename), restrict_dev)
  File "/nix/store/b55s23vqkxv3x415999ccnv2w4ri8wqn-attic-0.14/lib/python3.4/site-packages/attic/archiver.py", line 177, in _process
    os.path.join(path, filename), restrict_dev)
  File "/nix/store/b55s23vqkxv3x415999ccnv2w4ri8wqn-attic-0.14/lib/python3.4/site-packages/attic/archiver.py", line 163, in _process
    archive.process_file(path, st, cache)
  File "/nix/store/b55s23vqkxv3x415999ccnv2w4ri8wqn-attic-0.14/lib/python3.4/site-packages/attic/archive.py", line 410, in process_file
    self.add_item(item)
  File "/nix/store/b55s23vqkxv3x415999ccnv2w4ri8wqn-attic-0.14/lib/python3.4/site-packages/attic/archive.py", line 173, in add_item
    self.write_checkpoint()
  File "/nix/store/b55s23vqkxv3x415999ccnv2w4ri8wqn-attic-0.14/lib/python3.4/site-packages/attic/archive.py", line 177, in write_checkpoint
    self.save(self.checkpoint_name)
  File "/nix/store/b55s23vqkxv3x415999ccnv2w4ri8wqn-attic-0.14/lib/python3.4/site-packages/attic/archive.py", line 199, in save
    self.manifest.write()
  File "/nix/store/b55s23vqkxv3x415999ccnv2w4ri8wqn-attic-0.14/lib/python3.4/site-packages/attic/helpers.py", line 121, in write
    self.repository.put(self.MANIFEST_ID, self.key.encrypt(data))
  File "/nix/store/b55s23vqkxv3x415999ccnv2w4ri8wqn-attic-0.14/lib/python3.4/site-packages/attic/remote.py", line 236, in put
    return self.call('put', id_, data, wait=wait)
  File "/nix/store/b55s23vqkxv3x415999ccnv2w4ri8wqn-attic-0.14/lib/python3.4/site-packages/attic/remote.py", line 127, in call
    for resp in self.call_many(cmd, [args], **kw):
  File "/nix/store/b55s23vqkxv3x415999ccnv2w4ri8wqn-attic-0.14/lib/python3.4/site-packages/attic/remote.py", line 160, in call_many
    raise self.RPCError(error)
attic.remote.RPCError: b'AttributeError'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions