
Source (link to git-repo or to original if based on someone elses unmodified work):
Available as/for:
Description:The principe is pretty simple: you choose a directory to backup, you choose the directory in which you want to backup it, you set up some options (eg. frequency) and it's done! Of course you can add later some other directories.
A daemon will after take care of automatically perform backups when it's needed.
When the time comes, Keep offers you a simple wizard to recover a previously backuped directory.
It uses rdiff-backup (http://www.nongnu.org/rdiff-backup/) as backend.
Version 0.3.0 adds error, logging and notification management.
Keep still need some motivated C++/Qt coders. There is some important tasks to do: improve the log viewer, improve the notification system, implement the include and exclude file management, implement the network located backup mode...
VERSION 0.4.0
AD possibility to use an inclusion/exclusion list when setting up backup source
AD possibility to control rdiff-backup process priority
AD Restore backup wizard now displays last backup date
FIX: Backup every hour bug fixed
Ratings & Comments
88 Comments
Some help please:No compression? It freezes up? scrambled file names? Under backup options I set "Never Delete" and to "Use compression" under Extra options. But keep will not compress any files! The program freezes up when you select the sources to backup and click ok, you can not shut it down or cancel what you have started. It is scrambling some of the file names when I backup to a memory stick that is fat32 formated,it's okay on a linux ext3 system. The file names look like this: ;074otter.down ;078otes.political ;080ictures What is this??? Keep added the ";" and changed some of the letters in the file names to numbers? Help please.TIA fireboy
Is it possible to backup ONLY hidden files using Keep? I've been experimenting with the filters, but don't seem to be able to figure it out ...
Will there be a KDE 4 Version?
I just received an e-mail from the author, stating that he is too busy with his PhD to continue to develop Keep for a while. He did not mention leaving it die, but did say he'd very much like seeing someone come and take over development of Keep. So, I think the answer to your question is: if someone steps forward and takes over the porting. I sure hope so. I fell in love with Keep's simplicity and usability :] P.S. In that e-mail I asked him if he could include support for pre- and post- scripts (to e.g. mount and unmount en external disk if present). He likes the idea, but has not the time.
Hi, I keep getting this error: An error occured making /home/reg backup: Traceback (most recent call last): File "/usr/bin/rdiff-backup", line 23, in rdiff_backup.Main.Main(sys.argv[1:]) File "/usr/lib/python2.5/site-packages/rdiff_backup/Main.py", line 285, in Main take_action(rps) File "/usr/lib/python2.5/site-packages/rdiff_backup/Main.py", line 255, in take_action elif action == "backup": Backup(rps[0], rps[1]) File "/usr/lib/python2.5/site-packages/rdiff_backup/Main.py", line 295, in Backup backup_set_rbdir(rpin, rpout) File "/usr/lib/python2.5/site-packages/rdiff_backup/Main.py", line 353, in backup_set_rbdir rpout.chmod(0700) # just make sure permissions aren't too lax File "/usr/lib/python2.5/site-packages/rdiff_backup/rpath.py", line 759, in chmod self.conn.os.chmod(self.path, permissions & Globals.permission_mask) OSError: [Errno 1] Operation not permitted: '/mnt/data/backup/keep' Operation not permitted? The location wwhere i wanna back up to has permissions set to 777: drwxrwxrwx 4 reg smb 0 2008-06-21 11:38 backup What does "just make sure permissions aren't too lax" mean? Thanks!
Hi! I have a small issue: when I backup my files to en external disc (My Book Essential; FAT32) and keep turns all the uppercase chars into code something like this ;XXX (example ;068). If I make a directory with Dolphin it makes it just fine. I'm using Kubuntu 8.04 with KDE4.
can i use fish to backup to a server? if i start a backup, keep failed to connect. Is that a kubuntu problem?
I know v0.4.0 fixed the backup every hour bug and mine has worked fine for about 4 months, but one day about a week ago, my one backup directory that is set for every day, started being backed up every hour according to the view log. I'm not sure what happened on that day to start the hourly backups My other directories set for 2-5 days between backups do NOT back every hour. - They work fine. Any Ideas?
Try applying these patches --- rdbmanager.cpp 2008-11-27 22:12:46.000000000 +0000 +++ rdbmanager.cpp 2008-11-27 22:14:24.000000000 +0000 @@ -360,7 +360,7 @@ // Gets the rdiff-backup process KProcess *proc = RDBProcess(); // Adds the options - *proc << "--remove-older-than" << QString("%1").arg(backup.deleteAfter()) + "D"; + *proc << "--force" << "--remove-older-than" << QString("%1").arg(backup.deleteAfter()) + "D"; // Adds dest *proc << backup.dest(); // Starts the process and --- rdblistener.cpp 2008-11-27 22:13:01.000000000 +0000 +++ rdblistener.cpp 2008-11-27 22:13:51.000000000 +0000 @@ -27,12 +27,12 @@ void RDBListener::receivedStdErr(KProcess *proc, char *buffer, int buflen) { m_isOk = false; - m_stdErr.append(buffer); + m_stdErr.append(QString::fromLatin1(buffer, buflen)); } void RDBListener::receivedStdOut(KProcess *proc, char *buffer, int buflen) { - m_stdOut.append(buffer); + m_stdOut.append(QString::fromLatin1(buffer, buflen)); } QString RDBListener::errorMessage()
I have the following problem: I am backing up my notebook to an external HD. Obviously, this only makes sense if the HD is present. However, I had quite severe problems with backups taking place at times I did not want it to happen. In that case, files are written to the mount path of the external HD (which is then on the internal HD). This got so bad, that my root HD got completely clogged. My X session crashed, and I could not log on again. It turned out that even after freeing some space, my system was unbootable. In the end I lost one day and had to reinstall from scratch. In other words: I *REALLY* want to turn off the daemon permanently. How can this be done? I thought simply clicking the button in keep would do it. Apparently it didn't. Am I the only one with this issue? (I have seen few people actually having difficulties to get it running automatically). Any ideas/suggestions would be highly welcome. --hasi
Sorry, I didn't know about the home page. Can you post the URL? Thanks, --hasi
I don't know for sure because I havn't tried... but try going to KDE Control Center >>> KDE Components >>> Session Manager >>> uncheck the "keep daemon" box.
Hi, Keep seems like a great tool so far, but I have a problem. I've set it to backup some vmware virtual machine files daily, however I don't know when within the day the Keep daemon performs the backup. I need to know so that I can set a cron job to run a script to suspend the virtual machines when the backup is about to occur. Any help would be appreciated.
Do you plan to port this great tool to KDE4?
Quick question I am doing backups over my network using smb4k. I have set different backup folders. One folder is my wifes and one is mine. All my files are in English, and I have no problems backing them up. Now my wife puts files in her folder with Russian titles in Russian, and keep kicks out an error. I'm not in front of my computer right now, but I could get the error and post it here if its needed. So would this be caused by something at the OS lever of app? Any ideas how I could fix it? I'm sure the error would be helpful, so I will post it when I can.
this is one of the errors An error occured making /home/backmeup/smb4k/HOMESERVE/T's Share backup: Exception '[Errno 5] Input/output error: "/home/backmeup/smb4k/HOMESERVE/T's Share"' raised of class '': File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 295, in error_check_Main try: Main(arglist) File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 312, in Main rps = map(SetConnections.cmdpair2rp, cmdpairs) File "/var/lib/python-support/python2.5/rdiff_backup/SetConnections.py", line 75, in cmdpair2rp return rpath.RPath(conn, filename).normalize() File "/var/lib/python-support/python2.5/rdiff_backup/rpath.py", line 741, in __init__ else: self.setdata() File "/var/lib/python-support/python2.5/rdiff_backup/rpath.py", line 765, in setdata self.data = self.conn.C.make_file_dict(self.path) Traceback (most recent call last): File "/usr/bin/rdiff-backup", line 23, in rdiff_backup.Main.error_check_Main(sys.argv[1:]) File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 295, in error_check_Main try: Main(arglist) File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 312, in Main rps = map(SetConnections.cmdpair2rp, cmdpairs) File "/var/lib/python-support/python2.5/rdiff_backup/SetConnections.py", line 75, in cmdpair2rp return rpath.RPath(conn, filename).normalize() File "/var/lib/python-support/python2.5/rdiff_backup/rpath.py", line 741, in __init__ else: self.setdata() File "/var/lib/python-support/python2.5/rdiff_backup/rpath.py", line 765, in setdata self.data = self.conn.C.make_file_dict(self.path) OSError: [Errno 5] Input/output error: "/home/backmeup/smb4k/HOMESERVE/T's Share"
this is what I get if a russian file or dir is in her backup folder. An error occured making /home/backmeup/smb4k/HOMESERVE/T's Share backup: Previous backup seems to have failed, regressing destination now. Exception 'Path: /media/storage/butterfly/rdiff-backup-data/increments/pesnya_goda_2007/pesnya_goda_2007//.2007-06-04T00:04:50-04:00.dir Index: ('pesnya_goda_2007', 'pesnya_goda_2007', '', '.2007-06-04T00:04:50-04:00.dir') Data: {'uid': 1000, 'perms': 448, 'type': 'reg', 'gname': 'backmeup', 'ctime': 1181789963, 'devloc': 5697L, 'uname': 'backmeup', 'nlink': 1, 'gid': 1000, 'mtime': 1181789963, 'atime': 1181789963, 'inode': 10748533L, 'size': 0L}' raised of class '': File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 295, in error_check_Main try: Main(arglist) File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 315, in Main take_action(rps) File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 271, in take_action elif action == "backup": Backup(rps[0], rps[1]) File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 334, in Backup backup.Mirror_and_increment(rpin, rpout, incdir) File "/var/lib/python-support/python2.5/rdiff_backup/backup.py", line 51, in Mirror_and_increment DestS.patch_and_increment(dest_rpath, source_diffiter, inc_rpath) File "/var/lib/python-support/python2.5/rdiff_backup/backup.py", line 229, in patch_and_increment ITR(diff.index, diff) File "/var/lib/python-support/python2.5/rdiff_backup/rorpiter.py", line 284, in __call__ branch.start_process(*args) File "/var/lib/python-support/python2.5/rdiff_backup/backup.py", line 684, in start_process inc = increment.Increment(diff_rorp, self.base_rp, inc_prefix) File "/var/lib/python-support/python2.5/rdiff_backup/increment.py", line 41, in Increment elif mirror.isdir(): incrp = makedir(mirror, incpref) File "/var/lib/python-support/python2.5/rdiff_backup/increment.py", line 94, in makedir dirsign = get_inc(incpref, "dir") File "/var/lib/python-support/python2.5/rdiff_backup/increment.py", line 114, in get_inc assert not incrp.lstat(), incrp Traceback (most recent call last): File "/usr/bin/rdiff-backup", line 23, in rdiff_backup.Main.error_check_Main(sys.argv[1:]) File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 295, in error_check_Main try: Main(arglist) File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 315, in Main take_action(rps) File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 271, in take_action elif action == "backup": Backup(rps[0], rps[1]) File "/var/lib/python-support/python2.5/rdiff_backup/Main.py", line 334, in Backup backup.Mirror_and_increment(rpin, rpout, incdir) File "/var/lib/python-support/python2.5/rdiff_backup/backup.py", line 51, in Mirror_and_increment DestS.patch_and_increment(dest_rpath, source_diffiter, inc_rpath) File "/var/lib/python-support/python2.5/rdiff_backup/backup.py", line 229, in patch_and_increment ITR(diff.index, diff) File "/var/lib/python-support/python2.5/rdiff_backup/rorpiter.py", line 284, in __call__ branch.start_process(*args) File "/var/lib/python-support/python2.5/rdiff_backup/backup.py", line 684, in start_process inc = increment.Increment(diff_rorp, self.base_rp, inc_prefix) File "/var/lib/python-support/python2.5/rdiff_backup/increment.py", line 41, in Increment elif mirror.isdir(): incrp = makedir(mirror, incpref) File "/var/lib/python-support/python2.5/rdiff_backup/increment.py", line 94, in makedir dirsign = get_inc(incpref, "dir") File "/var/lib/python-support/python2.5/rdiff_backup/increment.py", line 114, in get_inc assert not incrp.lstat(), incrp AssertionError: Path: /media/storage/butterfly/rdiff-backup-data/increments/pesnya_goda_2007/pesnya_goda_2007//.2007-06-04T00:04:50-04:00.dir Index: ('pesnya_goda_2007', 'pesnya_goda_2007', '', '.2007-06-04T00:04:50-04:00.dir') Data: {'uid': 1000, 'perms': 448, 'type': 'reg', 'gname': 'backmeup', 'ctime': 1181789963, 'devloc': 5697L, 'uname': 'backmeup', 'nlink': 1, 'gid': 1000, 'mtime': 1181789963, 'atime': 1181789963, 'inode': 10748533L, 'size': 0L}
Could be better with a wildcard possibility or a real inclure/exclude file. For example:~/.[A-Za-z0-9]*
~/.[A-Za-z0-9]* --exclude Trash --exclude thumbnails --include whatever
Command line seems to remain more powerful http://www.nongnu.org/rdiff-backup/examples.html
Could be better with a wildcard possibility or a real inclure/exclude file. For example:~/.[A-Za-z0-9]*
~/.[A-Za-z0-9]* --exclude Trash --exclude thumbnails --include whatever
Command line seems to remain more powerful http://www.nongnu.org/rdiff-backup/examples.html
Although i have had this installed for a couple of days and it seems to backup at odd times, when i go to where the backups are, on my son's computer, and look in the rdiff-backup-data folder, i see a list of rdiff-backup.tmp. folders. All each folder contains is an empty hardlink_file1. Is this correct? Shouldn't some of these contain some changed files or something? i am using 0.3.0 from Freespire. Have a great evening! :)
Wow, i really like this program. i hope it's development continues. i am very impressed with its use of the backend rdiff although i am still learning about it. i backup to my son's WinXP computer upstairs from my Freespire running KDE 3.3 i think. Hopefully when the update to Freespire comes out, it will contain the updated version of Keep cause i don't really know how to just download the program from KDE-Apps and install it over the one that i have. Keep up the good work! This is a great, SIMPLE!, program for us beginner Linux fans.
Is it possible to backup to SMB (i.e., smb://locationofdriveanddirectory). When I try to backup to SMB, I receive an error stating "Fatal Error: Unable to create directory smb:/locustcorphd/bsulzen/kubuntu_backups/Kubuntu_Home_Dir". Is it because Keep is stripping one of the fowards slashes that follows the smb portion of the URI? Any ideas? I am able to run backups to the same location using Konserve. I would prefer to use Keep because Konserve does not seem to have an option to run incremental backups. Any help would be appreciated
hi seems a good pkg but here is what happen when I try to launch a backup: Exception 'class ErrorLog has no attribute '_log_inc_rp'' raised of class 'exceptions.AttributeError': File "/usr/lib/python2.4/site-packages/rdiff_backup/Main.py", line 295, in error_check_Main try: Main(arglist) File "/usr/lib/python2.4/site-packages/rdiff_backup/Main.py", line 315, in Main take_action(rps) File "/usr/lib/python2.4/site-packages/rdiff_backup/Main.py", line 271, in take_action elif action == "backup": Backup(rps[0], rps[1]) File "/usr/lib/python2.4/site-packages/rdiff_backup/Main.py", line 328, in Backup backup_final_init(rpout) File "/usr/lib/python2.4/site-packages/rdiff_backup/Main.py", line 430, in backup_final_init ErrorLog.open(Time.curtimestr, compress = Globals.compression) File "/usr/lib/python2.4/site-packages/rdiff_backup/log.py", line 216, in open else: cls._log_fileobj = cls._log_inc_rp.open("wb", compress = 0) Traceback (most recent call last): File "/usr/bin/rdiff-backup", line 23, in ? rdiff_backup.Main.error_check_Main(sys.argv[1:]) File "/usr/lib/python2.4/site-packages/rdiff_backup/Main.py", line 295, in error_check_Main try: Main(arglist) File "/usr/lib/python2.4/site-packages/rdiff_backup/Main.py", line 315, in Main take_action(rps) File "/usr/lib/python2.4/site-packages/rdiff_backup/Main.py", line 271, in take_action elif action == "backup": Backup(rps[0], rps[1]) File "/usr/lib/python2.4/site-packages/rdiff_backup/Main.py", line 328, in Backup backup_final_init(rpout) File "/usr/lib/python2.4/site-packages/rdiff_backup/Main.py", line 430, in backup_final_init ErrorLog.open(Time.curtimestr, compress = Globals.compression) File "/usr/lib/python2.4/site-packages/rdiff_backup/log.py", line 216, in open else: cls._log_fileobj = cls._log_inc_rp.open("wb", compress = 0) AttributeError: class ErrorLog has no attribute '_log_inc_rp'
Same problem for me on two different Kubuntu 7.04 machines. Keep worked fine on Opensuse 10.2 before. Any ideas what the error messages tells us and how Keep can be convinced to work? Thanks, xxtobi