Opened 17 years ago
Closed 17 years ago
#7798 closed defect (fixed)
trac-admin hotcopy dies on unreadable files
| Reported by: | Owned by: | Remy Blank | |
|---|---|---|---|
| Priority: | normal | Milestone: | 0.11.3 |
| Component: | admin/console | Version: | none |
| Severity: | major | Keywords: | |
| Cc: | Branch: | ||
| Release Notes: | |||
| API Changes: | |||
| Internal Changes: | |||
Description
Background:
I'm using a nightly cron script to backup my trac environment by calling trac-admin hotcopy. When I changed from tracd to apache2 as web front-end I created a copy of the trac.ini file which was owned by root:www-data and wasn't readable from the user ID used for the backup script. As an result the next backup failed because trac-admin died with the error message below, leaving a partial backup copy behind (not including trac.db).
IMHO, the hotcopy command should catch an couldn't-read-file exception and skip the particular file while producing a non-fatal error message. It is important that so many data/files are backuped as possible.
Traceback (most recent call last):
File "/usr/bin/trac-admin", line 8, in <module>
load_entry_point('Trac==0.11.1', 'console_scripts', 'trac-admin')()
File "/usr/lib/python2.5/site-packages/Trac-0.11.1-py2.5.egg/trac/admin/console.py", line 1295, in run
return admin.onecmd(command)
File "/usr/lib/python2.5/site-packages/Trac-0.11.1-py2.5.egg/trac/admin/console.py", line 123, in onecmd
rv = cmd.Cmd.onecmd(self, line) or 0
File "/usr/lib/python2.5/cmd.py", line 219, in onecmd
return func(arg)
File "/usr/lib/python2.5/site-packages/Trac-0.11.1-py2.5.egg/trac/admin/console.py", line 1185, in do_hotcopy
copytree(self.__env.path, dest, symlinks=1, skip=skip)
File "/usr/lib/python2.5/site-packages/Trac-0.11.1-py2.5.egg/trac/admin/console.py", line 87, in copytree
copytree_rec(str_path(src), str_path(dst))
File "/usr/lib/python2.5/site-packages/Trac-0.11.1-py2.5.egg/trac/admin/console.py", line 79, in copytree_rec
copytree_rec(srcname, dstname)
File "/usr/lib/python2.5/site-packages/Trac-0.11.1-py2.5.egg/trac/admin/console.py", line 86, in copytree_rec
raise shutil.Error, errors
shutil.Error: [('/home/martin/trac/conf/trac.ini.standalone', '/tmp/tracbackup_FJX7973/trac/conf/trac.ini.standalone', IOError(13, 'Permission denied'))]
Attachments (0)
Change History (4)
comment:1 by , 17 years ago
| Milestone: | → 0.12 |
|---|---|
| Owner: | set to |
comment:2 by , 17 years ago
| Component: | general → admin/console |
|---|
comment:3 by , 17 years ago
| Milestone: | 0.12 → 0.11.3 |
|---|---|
| Status: | new → assigned |
Fixed in trunk in [7678]. I'll backport the fix to 0.11.3 once 0.11.2.1 is out.
The fix is mostly the same as how shutil.copytree() is implemented (of which copytree() was most probably an adapted copy already). There's a bug in the 2.5.2 version of shutil.copytree() though (errors.extend → errors.append).
comment:4 by , 17 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
Backported to 0.11-stable in [7693].



That makes sense. I'm working on
trac-adminat the moment, so I'll look at this shortly.