| -*- indented-text -*- |
| |
| FEATURES ------------------------------------------------------------ |
| Use chroot only if supported |
| Allow supplementary groups in rsyncd.conf 2002/04/09 |
| Handling IPv6 on old machines |
| Other IPv6 stuff |
| Add ACL support 2001/12/02 |
| proxy authentication 2002/01/23 |
| SOCKS 2002/01/23 |
| FAT support |
| --diff david.e.sewell 2002/03/15 |
| Add daemon --no-fork option |
| Create more granular verbosity 2003/05/15 |
| |
| DOCUMENTATION -------------------------------------------------------- |
| Keep list of open issues and todos on the web site |
| Perhaps redo manual as SGML |
| |
| LOGGING -------------------------------------------------------------- |
| Memory accounting |
| Improve error messages |
| Better statistics Rasmus 2002/03/08 |
| Perhaps flush stdout like syslog |
| Log child death on signal |
| verbose output David Stein 2001/12/20 |
| internationalization |
| |
| DEVELOPMENT -------------------------------------------------------- |
| Handling duplicate names |
| Use generic zlib 2002/02/25 |
| TDB 2002/03/12 |
| Splint 2002/03/12 |
| |
| PERFORMANCE ---------------------------------------------------------- |
| Traverse just one directory at a time |
| Allow skipping MD4 file_sum 2002/04/08 |
| Accelerate MD4 |
| |
| TESTING -------------------------------------------------------------- |
| Torture test |
| Cross-test versions 2001/08/22 |
| Test on kernel source |
| Test large files |
| Create mutator program for testing |
| Create configure option to enable dangerous tests |
| Create pipe program for testing |
| Create test makefile target for some tests |
| |
| RELATED PROJECTS ----------------------------------------------------- |
| rsyncsh |
| http://rsync.samba.org/rsync-and-debian/ |
| rsyncable gzip patch |
| rsyncsplit as alternative to real integration with gzip? |
| reverse rsync over HTTP Range |
| |
| |
| |
| FEATURES ------------------------------------------------------------ |
| |
| |
| Use chroot only if supported |
| |
| If the platform doesn't support it, then don't even try. |
| |
| If running as non-root, then don't fail, just give a warning. |
| (There was a thread about this a while ago?) |
| |
| http://lists.samba.org/pipermail/rsync/2001-August/thread.html |
| http://lists.samba.org/pipermail/rsync/2001-September/thread.html |
| |
| -- -- |
| |
| |
| Allow supplementary groups in rsyncd.conf 2002/04/09 |
| |
| Perhaps allow supplementary groups to be specified in rsyncd.conf; |
| then make the first one the primary gid and all the rest be |
| supplementary gids. |
| |
| -- -- |
| |
| |
| Handling IPv6 on old machines |
| |
| The KAME IPv6 patch is nice in theory but has proved a bit of a |
| nightmare in practice. The basic idea of their patch is that rsync |
| is rewritten to use the new getaddrinfo()/getnameinfo() interface, |
| rather than gethostbyname()/gethostbyaddr() as in rsync 2.4.6. |
| Systems that don't have the new interface are handled by providing |
| our own implementation in lib/, which is selectively linked in. |
| |
| The problem with this is that it is really hard to get right on |
| platforms that have a half-working implementation, so redefining |
| these functions clashes with system headers, and leaving them out |
| breaks. This affects at least OSF/1, RedHat 5, and Cobalt, which |
| are moderately improtant. |
| |
| Perhaps the simplest solution would be to have two different files |
| implementing the same interface, and choose either the new or the |
| old API. This is probably necessary for systems that e.g. have |
| IPv6, but gethostbyaddr() can't handle it. The Linux manpage claims |
| this is currently the case. |
| |
| In fact, our internal sockets interface (things like |
| open_socket_out(), etc) is much narrower than the getaddrinfo() |
| interface, and so probably simpler to get right. In addition, the |
| old code is known to work well on old machines. |
| |
| We could drop the rather large lib/getaddrinfo files. |
| |
| -- -- |
| |
| |
| Other IPv6 stuff |
| |
| Implement suggestions from http://www.kame.net/newsletter/19980604/ |
| and ftp://ftp.iij.ad.jp/pub/RFC/rfc2553.txt |
| |
| If a host has multiple addresses, then listen try to connect to all |
| in order until we get through. (getaddrinfo may return multiple |
| addresses.) This is kind of implemented already. |
| |
| Possibly also when starting as a server we may need to listen on |
| multiple passive addresses. This might be a bit harder, because we |
| may need to select on all of them. Hm. |
| |
| -- -- |
| |
| |
| Add ACL support 2001/12/02 |
| |
| Transfer ACLs. Need to think of a standard representation. |
| Probably better not to even try to convert between NT and POSIX. |
| Possibly can share some code with Samba. |
| NOTE: there is a patch that implements this in the "patches" subdir. |
| |
| -- -- |
| |
| |
| proxy authentication 2002/01/23 |
| |
| Allow RSYNC_PROXY to be http://user:pass@proxy.foo:3128/, and do |
| HTTP Basic Proxy-Authentication. |
| |
| Multiple schemes are possible, up to and including the insanity that |
| is NTLM, but Basic probably covers most cases. |
| |
| -- -- |
| |
| |
| SOCKS 2002/01/23 |
| |
| Add --with-socks, and then perhaps a command-line option to put them |
| on or off. This might be more reliable than LD_PRELOAD hacks. |
| |
| -- -- |
| |
| |
| FAT support |
| |
| rsync to a FAT partition on a Unix machine doesn't work very well at |
| the moment. I think we get errors about invalid filenames and |
| perhaps also trying to do atomic renames. |
| |
| I guess the code to do this is currently #ifdef'd on Windows; |
| perhaps we ought to intelligently fall back to it on Unix too. |
| |
| -- -- |
| |
| |
| --diff david.e.sewell 2002/03/15 |
| |
| Allow people to specify the diff command. (Might want to use wdiff, |
| gnudiff, etc.) |
| |
| Just diff the temporary file with the destination file, and delete |
| the tmp file rather than moving it into place. |
| |
| Interaction with --partial. |
| |
| Security interactions with daemon mode? |
| |
| -- -- |
| |
| |
| Add daemon --no-fork option |
| |
| Very useful for debugging. Also good when running under a |
| daemon-monitoring process that tries to restart the service when the |
| parent exits. |
| |
| -- -- |
| |
| |
| Create more granular verbosity 2003/05/15 |
| |
| Control output with the --report option. |
| |
| The option takes as a single argument (no whitespace) a |
| comma delimited lists of keywords. |
| |
| This would separate debugging from "logging" as well as |
| fine grained selection of statistical reporting and what |
| actions are logged. |
| |
| http://lists.samba.org/archive/rsync/2003-May/006059.html |
| |
| -- -- |
| |
| DOCUMENTATION -------------------------------------------------------- |
| |
| |
| Keep list of open issues and todos on the web site |
| |
| -- -- |
| |
| |
| Perhaps redo manual as SGML |
| |
| The man page is getting rather large, and there is more information |
| that ought to be added. |
| |
| TexInfo source is probably a dying format. |
| |
| Linuxdoc looks like the most likely contender. I know DocBook is |
| favoured by some people, but it's so bloody verbose, even with emacs |
| support. |
| |
| -- -- |
| |
| LOGGING -------------------------------------------------------------- |
| |
| |
| Memory accounting |
| |
| At exit, show how much memory was used for the file list, etc. |
| |
| Also we do a wierd exponential-growth allocation in flist.c. I'm |
| not sure this makes sense with modern mallocs. At any rate it will |
| make us allocate a huge amount of memory for large file lists. |
| |
| -- -- |
| |
| |
| Improve error messages |
| |
| If we hang or get SIGINT, then explain where we were up to. Perhaps |
| have a static buffer that contains the current function name, or |
| some kind of description of what we were trying to do. This is a |
| little easier on people than needing to run strace/truss. |
| |
| "The dungeon collapses! You are killed." Rather than "unexpected |
| eof" give a message that is more detailed if possible and also more |
| helpful. |
| |
| If we get an error writing to a socket, then we should perhaps |
| continue trying to read to see if an error message comes across |
| explaining why the socket is closed. I'm not sure if this would |
| work, but it would certainly make our messages more helpful. |
| |
| What happens if a directory is missing -x attributes. Do we lose |
| our load? (Debian #28416) Probably fixed now, but a test case would |
| be good. |
| |
| -- -- |
| |
| |
| Better statistics Rasmus 2002/03/08 |
| |
| <Rasmus> |
| hey, how about an rsync option that just gives you the |
| summary without the list of files? And perhaps gives |
| more information like the number of new files, number |
| of changed, deleted, etc. ? |
| |
| <mbp> |
| nice idea there is --stats but at the moment it's very |
| tridge-oriented rather than user-friendly it would be |
| nice to improve it that would also work well with |
| --dryrun |
| |
| -- -- |
| |
| |
| Perhaps flush stdout like syslog |
| |
| Perhaps flush stdout after each filename, so that people trying to |
| monitor progress in a log file can do so more easily. See |
| http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=48108 |
| |
| -- -- |
| |
| |
| Log child death on signal |
| |
| If a child of the rsync daemon dies with a signal, we should notice |
| that when we reap it and log a message. |
| |
| -- -- |
| |
| |
| verbose output David Stein 2001/12/20 |
| |
| At end of transfer, show how many files were or were not transferred |
| correctly. |
| |
| -- -- |
| |
| |
| internationalization |
| |
| Change to using gettext(). Probably need to ship this for platforms |
| that don't have it. |
| |
| Solicit translations. |
| |
| Does anyone care? Before we bother modifying the code, we ought to |
| get the manual translated first, because that's possibly more useful |
| and at any rate demonstrates desire. |
| |
| -- -- |
| |
| DEVELOPMENT -------------------------------------------------------- |
| |
| Handling duplicate names |
| |
| Some folks would like rsync to be deterministic in how it handles |
| duplicate names that come from mering multiple source directories |
| into a single destination directory; e.g. the last name wins. We |
| could do this by switching our sort algorithm to one that will |
| guarantee that the names won't be reordered. Alternately, we could |
| assign an ever-increasing number to each item as we insert it into |
| the list and then make sure that we leave the largest number when |
| cleaning the file list (see clean_flist()). Another solution would |
| be to add a hash table, and thus never put any duplicate names into |
| the file list (and bump the protocol to handle this). |
| |
| -- -- |
| |
| |
| Use generic zlib 2002/02/25 |
| |
| Perhaps don't use our own zlib. |
| |
| Advantages: |
| |
| - will automatically be up to date with bugfixes in zlib |
| |
| - can leave it out for small rsync on e.g. recovery disks |
| |
| - can use a shared library |
| |
| - avoids people breaking rsync by trying to do this themselves and |
| messing up |
| |
| Should we ship zlib for systems that don't have it, or require |
| people to install it separately? |
| |
| Apparently this will make us incompatible with versions of rsync |
| that use the patched version of rsync. Probably the simplest way to |
| do this is to just disable gzip (with a warning) when talking to old |
| versions. |
| |
| -- -- |
| |
| |
| Splint 2002/03/12 |
| |
| Build rsync with SPLINT to try to find security holes. Add |
| annotations as necessary. Keep track of the number of warnings |
| found initially, and see how many of them are real bugs, or real |
| security bugs. Knowing the percentage of likely hits would be |
| really interesting for other projects. |
| |
| -- -- |
| |
| PERFORMANCE ---------------------------------------------------------- |
| |
| Allow skipping MD4 file_sum 2002/04/08 |
| |
| If we're doing a local transfer, or using -W, then perhaps don't |
| send the file checksum. If we're doing a local transfer, then |
| calculating MD4 checksums uses 90% of CPU and is unlikely to be |
| useful. |
| |
| We should not allow it to be disabled separately from -W, though |
| as it is the only thing that lets us know when the rsync algorithm |
| got out of sync and messed the file up (i.e. if the basis file |
| changed between checksum generation and reception). |
| |
| -- -- |
| |
| |
| Accelerate MD4 |
| |
| Perhaps borrow an assembler MD4 from someone? |
| |
| Make sure we call MD4 with properly-sized blocks whenever possible |
| to avoid copying into the residue region? |
| |
| -- -- |
| |
| TESTING -------------------------------------------------------------- |
| |
| Torture test |
| |
| Something that just keeps running rsync continuously over a data set |
| likely to generate problems. |
| |
| -- -- |
| |
| |
| Cross-test versions 2001/08/22 |
| |
| Part of the regression suite should be making sure that we |
| don't break backwards compatibility: old clients vs new |
| servers and so on. Ideally we would test both up and down |
| from the current release to all old versions. |
| |
| Run current rsync versions against significant past releases. |
| |
| We might need to omit broken old versions, or versions in which |
| particular functionality is broken |
| |
| It might be sufficient to test downloads from well-known public |
| rsync servers running different versions of rsync. This will give |
| some testing and also be the most common case for having different |
| versions and not being able to upgrade. |
| |
| The new --protocol option may help in this. |
| |
| -- -- |
| |
| |
| Test on kernel source |
| |
| Download all versions of kernel; unpack, sync between them. Also |
| sync between uncompressed tarballs. Compare directories after |
| transfer. |
| |
| Use local mode; ssh; daemon; --whole-file and --no-whole-file. |
| |
| Use awk to pull out the 'speedup' number for each transfer. Make |
| sure it is >= x. |
| |
| -- -- |
| |
| |
| Test large files |
| |
| Sparse and non-sparse |
| |
| -- -- |
| |
| |
| Create mutator program for testing |
| |
| Insert bytes, delete bytes, swap blocks, ... |
| |
| -- -- |
| |
| |
| Create configure option to enable dangerous tests |
| |
| -- -- |
| |
| |
| Create pipe program for testing |
| |
| Create pipe program that makes slow/jerky connections for |
| testing Versions of read() and write() that corrupt the |
| stream, or abruptly fail |
| |
| -- -- |
| |
| |
| Create test makefile target for some tests |
| |
| Separate makefile target to run rough tests -- or perhaps |
| just run them every time? |
| |
| -- -- |
| |
| RELATED PROJECTS ----------------------------------------------------- |
| |
| rsyncsh |
| |
| Write a small emulation of interactive ftp as a Pythonn program |
| that calls rsync. Commands such as "cd", "ls", "ls *.c" etc map |
| fairly directly into rsync commands: it just needs to remember the |
| current host, directory and so on. We can probably even do |
| completion of remote filenames. |
| |
| -- -- |
| |
| |
| http://rsync.samba.org/rsync-and-debian/ |
| |
| |
| -- -- |
| |
| |
| rsyncable gzip patch |
| |
| Exhaustive, tortuous testing |
| |
| Cleanups? |
| |
| -- -- |
| |
| |
| rsyncsplit as alternative to real integration with gzip? |
| |
| -- -- |
| |
| |
| reverse rsync over HTTP Range |
| |
| Goswin Brederlow suggested this on Debian; I think tridge and I |
| talked about it previous in relation to rproxy. |
| |
| Addendum: It looks like someone is working on a version of this: |
| |
| http://zsync.moria.org.uk/ |
| |
| -- -- |
| |