=================
   TODO: arnie
=================

.. contents::
..
    1  Bugs
    2  Misc Ideas
      2.1  Implement FTP Upload
    3  Slow Operation
    4  Tracking new attributes and Storing attributes separately from contents
    5  Testing for uid/gid changes
    6  Compressing Backups
    7  User-submitted Feature Requests


Bugs
====

Problem with passwords and timeouts, fix this::

  (Stephen Boulet <stephen@theboulets.net>)
  On Apr 25, 2006, at 6:28 PM, Martin Blais wrote:

  > Ah yeah, that's right, I'm checking first if you have permissions so
  > we can abort right away instead of doing the backup for nothing.  This
  > happens in exists_remote_dir().
  >
  > Okie, two possibilities:
  >
  > 1. How about if I gave you an option to not perform that check?, e.g.
  > --no-check-remote
  >
  > 2. How about if I read the password in memory before starting
  > (triggered on an option), figured out how to pass that to ssh and scp,
  > and still did the check?
  >
  > Let me know which you prefer.  It's even better if you can send a
  > patch, I'm really busy this week...
  >
  > cheers,
  >

Misc Ideas
==========

Implement FTP Upload
--------------------

  On 4/27/06, Marc Valentin <mlgvalentin@gmail.com> wrote:
  > Hi Martin,
  > I just installed your backup software "Arnie".
  > I managed to use it with gnupg but my internet hosting provider
  > doesn't accept SSH so I cannot use your scp option. Is there a way to
  > use ftp instead ? I searched a little bit on the internet but I don't
  > see how I can get the backup file created by your script and send it
  > by ftp.
  > I know ftp is not secure but since the file is already encrypted with
  > gnupg I don't think it is a problem.
  > -marc-

  Yes indeed, that could be an option easily added.
  You can upload using FTP using one of the python stdlibs.
  That should be an option added to arnie-archive.

  I'm really busy for the next few weeks, so I won't be able to code
  this, but I'll add it to the TODO file.  If you need this now and will
  biuld it yourself, I'd be happy to integrate a patch.

  cheers,





- We need to include more empty files tests

- Include Tim Golden's Windows patch/idea (see email)

- Add ctime, mtime, and a flags array to file info.

- Print size of every file added to the backup.

- Support user/group file attributes (and change of).

Slow Operation
==============

Implement alternate unpacking method, untarring files one on top of the
other and removing unwanted files later.

- Note from Mukund <muks@mukund.org>::

   One minor inconvenience that I do notice is that restore times are
   very very slow (almost unusably slow) when a directory with a large
   number of files such as a Maildir tree are involved. I guess this is
   due to tar archive parsing on a per-file basis through Python's
   library and I remember reading somewhere on your website that you
   were thinking of untarring all of the backup archive in one go and
   then just picking up whatever files one wanted. I'd be grateful if
   you implement this feature.



Tracking new attributes and Storing attributes separately from contents
=======================================================================

Ideas from Harry Flink for desired features:

  There are still some features which might be good to add some day:

  1. uid/gid/mode changes shouldn't neccessarily add the whole file,
     if file data (MD5) is not changed, just the file's meta info.

  2. GPG-files should be extracted in fly to avoid making duplicates
     from the backups for extraction. I'm not sure how exactly this
     could be done, but I hope that somehow.

  3. I haven't tested whether modification times are stored and
     restored, but still it would be great to add them in .arniehistory.

  4. Maybe ACL-support someday, but I dont use them currently.
  

For (1) I would use a flag, that tells the restorer to "keep searching backwards
in time" for that one file, but which marks the attributes to be applied after.
This will require some more thinking, maybe all attributes should behave in this
way (i.e. if only mode changes, then no need to store the file again either).

I think the next modification to arnie will be this:  I will add uid, gid,
ctime, mtime and an array of flags to each file info.  This will allow me to
implement future features without having to change the format, and thus to
remain backwards compatible.

cheers,

Testing for uid/gid changes
===========================

Testing uid/gid's::

  From Harry Flink:

  > Yes, I noticed that the problem is only in incremental changes.
  > But if I'm using this in production server, it might save some
  > time to track the changes too. Also this minimizes one side risk:
  > If you try to restore backup with non-root user account, the
  > uid/gid are not set everytime correctly. I even restored the
  > archive with SUDO at /tmp/testrestore and still the owner was
  > not updated. With root account it works properly, but this new
  > uid/gid tracking saved me from lot a trouble already, because
  > it told me that something was wrong and I was able to track
  > down that restoring with root account there are not such problems
  > at all.
  
  Good note.  I will use this to build the tests (I will include a test with
  sudo).



  > The flag is a good idea.  In restore you could build a
  > statuschanges={} -dict and when the flag is found (I mean the
  > flag to notify that content shouldnt be added, but just
  > perm/time/owner etc is being changed), add the filename to the
  > dict with final values and continue restoring normally. Exception
  > to this is that if filename is already in statuschanges, then
  > dont modify statuschanges -item anymore for that file. After
  > restoring everything, modify file status (perm/time/owner) of all
  > items in dictionary.  Also we should return the dictionary from
  > restore to pass it to the verify (or modify something else, so
  > that verify knows the correct values).



Compressing Backups
===================

Existing archive files could be joined and compressed together at a new date,
easily, by writing a new program which would be a variation on arnie-restore.





User-submitted Feature Requests
===============================

Exclude from file lists (Michal Panasiewicz wolvverine at tlen dot pl)::

  add options --exclude-file-list /etc/backups/exclude

  where

  [root@serwer ]# cat /etc/backups/exclude
  *.[Mm][Pp]3
  *.[Mm][Pp]2
  *.[Aa][Vv][Ii]
  *.[Mm][Pp][Gg]
  *.[Ww][Mm][Vv]
  *.[Ww][Mm][Aa]
  *.[Vv][Oo][Bb]
  *.[Mm][Pp][Ee][Gg]
  *.[Mm][Pp][Ee]
  *.[Tt][Mm][Pp]
  *.*~
  *.*.rpmnew
  *.[Bb][Aa][Kk]
  *.[Oo][Ll][Dd]
  *.[Ii][Ss][Oo]
  */profile/[Cc]ookies/*
  */[Tt]emporary [Ii]nternet [Ff]iles/*
  */[Tt][Mm][Pp]/*
  */[Tt][Ee][Mm][Pp]/*
  */[Dd]ane aplikacji/[Mm]ozilla/[Pp]rofiles/*/*/[Cc]ache/*
  */[Mm]ozilla/[Ff]irefox/[Pp]rofiles/*/[Cc]ache/*
  *.[Mm][Dd][Ff]
  *.[Mm][Dd][Ss]
  *.[Nn][Rr][Gg]
  *.[Cc][Aa][Bb]
  *.[Ww][Aa][Vv]
  */.[Kk][Oo][Ss][Zz]/*
  #EOF

