|
/
Zope
/
gocept svn checkins
/
Archive
/
2008
/
2008-08
/
SVN: r6411 - gocept.infrastructure/trunk/portage-gocept/app-backup/rdiff-backup
[
SVN: r6392 - in gocept.vendo/trunk/src/gocept/vend... ]
[
SVN: r6420 - gocept.plone.oodocument/trunk/gocept/... ]
SVN: r6411 - gocept.infrastructure/trunk/portage-gocept/app-backup/rdiff-backup
Christian Theune <ct(at)gocept.com> |
2008-08-06 16:17:50 |
[ FULL ]
|
Author: ctheune
Date: Wed Aug 6 16:17:48 2008
New Revision: 6411
Log:
get ebuildout for 1.2.0. bugzilla also says this is probably going to land in
the upstream overlay.
Added:
gocept.infrastructure/trunk/portage-gocept/app-backup/rdiff-backup/
gocept.infrastructure/trunk/portage-gocept/app-backup/rdiff-backup/Manifest
gocept.infrastructure/trunk/portage-gocept/app-backup/rdiff-backup/rdiff-backup-1.2.0.ebuild
Added:
gocept.infrastructure/trunk/portage-gocept/app-backup/rdiff-backup/Manifest
==============================================================================
--- (empty file)
+++
gocept.infrastructure/trunk/portage-gocept/app-backup/rdiff-backup/Manifest Wed
Aug 6 16:17:48 2008
(at)(at) -0,0 +1,2 (at)(at)
+DIST rdiff-backup-1.2.0.tar.gz 187974 RMD160
88e7e67720d3d9eaf6908eab654c5d2a0a2bda3b SHA1
3ebb9561532f2b829d95b2f88ef0a3e1cd60d4d8 SHA256
2e9f8485f7dd662ec043e29101db4c80b83a56ef80a349d1f0bc7d73fc4e60fa
+EBUILD rdiff-backup-1.2.0.ebuild 711 RMD160
87077de5177aaa85ea49f36661522764710985ee SHA1
8fe75af3a5efff20a9554fd0f06c0934aa0eaa39 SHA256
2123627b7de110876613093c16ca2aeedca9df74d41902716305fe4e7e90ff41
Added:
gocept.infrastructure/trunk/portage-gocept/app-backup/rdiff-backup/rdiff-backup-1.2.0.ebuild
==============================================================================
--- (empty file)
+++
gocept.infrastructure/trunk/portage-gocept/app-backup/rdiff-backup/rdiff-backup-1.2.0.ebuild Wed
Aug 6 16:17:48 2008
(at)(at) -0,0 +1,19 (at)(at)
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
/var/cvsroot/gentoo-x86/app-backup/rdiff-backup/rdiff-backup-1.1.14.ebuild,v
1.2 2008/01/25 19:45:19 grobian Exp $
+
+inherit distutils
+
+DESCRIPTION="Remote incremental file backup utility; uses librsync's rdiff
utility to create concise, versioned backups."
+HOMEPAGE="http://www.nongnu.org/rdiff-backup/"
+SRC_URI="http://savannah.nongnu.org/download/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~sh ~sparc ~x86"
+IUSE="acl xattr"
+
+DEPEND=">=net-libs/librsync-0.9.7
+ !arm? ( xattr? ( dev-python/pyxattr )
+ acl? ( dev-python/pylibacl ) )"
+RDEPEND="${DEPEND}"
|
SVN: r6423 - in gocept.infrastructure/trunk: portage-gocept/app-backup/gocept-backup util/backup/src/gocept/backup util/backup/src/gocept/backup/share
Christian Kauhaus <kc(at)gocept.com> |
2008-08-14 13:42:14 |
[ FULL ]
|
Author: ckauhaus
Date: Thu Aug 14 13:42:12 2008
New Revision: 6423
Log:
* Fixed unicode bug: when writing an unicode string to stdin of a shell pipe,
it got charcter buffered not line buffered. Thus, all commands to the backup
client where stripped to the first character.
* Prepared version bump to 0.5.
Added:
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/gocept-backup-0.5.ebuild
- copied, changed from r6422,
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/gocept-backup-0.4.ebuild
Removed:
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/gocept-backup-0.3.ebuild
Modified:
gocept.infrastructure/trunk/util/backup/src/gocept/backup/metadata.py
gocept.infrastructure/trunk/util/backup/src/gocept/backup/share/client.sh
gocept.infrastructure/trunk/util/backup/src/gocept/backup/shellcmd.py
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_client.py
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_metadata.py
gocept.infrastructure/trunk/util/backup/src/gocept/backup/version.py
Copied:
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/gocept-backup-0.5.ebuild
(from r6422,
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/gocept-backup-0.4.ebuild)
==============================================================================
---
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/gocept-backup-0.4.ebuild (original)
+++
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/gocept-backup-0.5.ebuild Thu
Aug 14 13:42:12 2008
(at)(at) -17,7 +17,7 (at)(at)
IUSE=""
RESTRICT="mirror"
-DEPEND="dev-python/setuptools"
+DEPEND="dev-python/setuptools >=app-backup/rdiff-backup-1.2.0"
RDEPEND="${DEPEND}"
confdir="${ROOT}etc/${PN}"
Modified: gocept.infrastructure/trunk/util/backup/src/gocept/backup/metadata.py
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/metadata.py (original)
+++ gocept.infrastructure/trunk/util/backup/src/gocept/backup/metadata.py Thu
Aug 14 13:42:12 2008
(at)(at) -10,7 +10,7 (at)(at)
import StringIO
import gocept.backup.log
-from gocept.backup.shellcmd import shellcmd
+import gocept.backup.shellcmd
class Metadata(object):
(at)(at) -34,8 +34,8 (at)(at)
self.log.info(u"Loading metadata from '%s'", self.host)
args = self.remotecmd() + [u'backupclient']
self.log.debug(u'Running %s', u' '.join(args))
- (stdout, stderr, returncode) = shellcmd(
- args[0], args[1:], u'metadata\n', accept_failure=True)
+ (stdout, stderr, returncode) = gocept.backup.shellcmd.shellcmd(
+ args[0], args[1:], 'metadata\n', accept_failure=True)
if returncode > 0:
self.log.error(u'%s metadata: %s' % (
self.host, gocept.backup.shellcmd.fmt(
(at)(at) -122,6 +122,6 (at)(at)
def host_reachable(self):
"""Return true if the host responds to ping."""
self.log.debug(u'Running ping -c4 -q %s', self.host)
- (stdout, stderr, returncode) = shellcmd(
+ (stdout, stderr, returncode) = gocept.backup.shellcmd.shellcmd(
u'ping', [u'-c4', u'-q', self.host], accept_failure=True)
return (0 == returncode)
Modified:
gocept.infrastructure/trunk/util/backup/src/gocept/backup/share/client.sh
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/share/client.sh (original)
+++
gocept.infrastructure/trunk/util/backup/src/gocept/backup/share/client.sh Thu
Aug 14 13:42:12 2008
(at)(at) -4,7 +4,7 (at)(at)
# further actions.
set -e
-VERSION="0.4"
+VERSION="0.5"
ETCDIR="${ROOTDIR}/etc"
CONFDIR="${ETCDIR}/gocept-backup"
(at)(at) -55,7 +55,7 (at)(at)
# Provide a help string with this script's version and lastmod date
send_version()
{
- echo -n "gocept backup client v${VERSION} installed "
+ echo -n "gocept backup client ${VERSION} installed "
echo "$(date +%Y-%m-%d -r $0), $(rdiff-backup --version)"
}
Modified: gocept.infrastructure/trunk/util/backup/src/gocept/backup/shellcmd.py
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/shellcmd.py (original)
+++ gocept.infrastructure/trunk/util/backup/src/gocept/backup/shellcmd.py Thu
Aug 14 13:42:12 2008
(at)(at) -1,5 +1,7 (at)(at)
import subprocess
+import gocept.backup.log
+
def shellcmd(cmd, args, input=None, accept_failure=False):
"""Generic shell command wrapper.
(at)(at) -8,9 +10,13 (at)(at)
mocking up some commands.
"""
+ log = gocept.backup.log.Log().get()
command = [cmd]+list(args)
+ #log.debug(u'Running %s', u' '.join(command))
p = subprocess.Popen(command, stdin=subprocess.PIPE,
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ #if input:
+ #log.debug(u'Writing %s', input)
stdout, stderr = p.communicate(input)
if not accept_failure and p.returncode > 0:
raise RuntimeError(u"command '%s' failed with %s" % (
Modified:
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_client.py
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_client.py (original)
+++
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_client.py Thu
Aug 14 13:42:12 2008
(at)(at) -137,7 +137,7 (at)(at)
def test_version(self):
output = self.shellout(self.CLIENT, u'version\n').stdout.read()
- pat = r'^gocept backup client v.* installed .*'
+ pat = r'^gocept backup client .* installed .*'
self.assert_(re.search(pat, output), u'pattern %r not found in %s' %
(pat, output))
Modified:
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_metadata.py
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_metadata.py (original)
+++
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_metadata.py Thu
Aug 14 13:42:12 2008
(at)(at) -57,7 +57,7 (at)(at)
shellcmd = self.mock.replace('gocept.backup.shellcmd.shellcmd')
shellcmd('ssh',
['-F', self.conf.sshconf, u'hostname', 'backupclient'],
- u'metadata\n',
+ 'metadata\n',
mocker.KWARGS)
self.mock.result(('tar-archive', '', 0))
self.meta.unpack = lambda a: self.assert_(isinstance(a, basestring))
Modified: gocept.infrastructure/trunk/util/backup/src/gocept/backup/version.py
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/version.py (original)
+++ gocept.infrastructure/trunk/util/backup/src/gocept/backup/version.py Thu
Aug 14 13:42:12 2008
(at)(at) -1,4 +1,4 (at)(at)
# Copyright (c) 2008 gocept gmbh & co. kg
# See also LICENSE.txt
-VERSION = u'0.4'
+VERSION = u'0.5'
|
SVN: r6424 - in gocept.infrastructure/trunk: portage-gocept/app-backup/gocept-backup util/backup/src/gocept/backup
Christian Kauhaus <kc(at)gocept.com> |
2008-08-14 13:54:09 |
[ FULL ]
|
Author: ckauhaus
Date: Thu Aug 14 13:54:07 2008
New Revision: 6424
Log:
improved logging
Modified:
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/ChangeLog
gocept.infrastructure/trunk/util/backup/src/gocept/backup/metadata.py
gocept.infrastructure/trunk/util/backup/src/gocept/backup/run.py
gocept.infrastructure/trunk/util/backup/src/gocept/backup/server.txt
gocept.infrastructure/trunk/util/backup/src/gocept/backup/shellcmd.py
Modified:
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/ChangeLog
==============================================================================
---
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/ChangeLog (original)
+++
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/ChangeLog Thu
Aug 14 13:54:07 2008
(at)(at) -1,5 +1,9 (at)(at)
# ChangeLog for app-backup/goceptbackup
+* 14 Aug 2008; Christian Kauhaus <kc(at)gocept.com>
goceptbackup-0.5.ebuild:
+ Fixed unicode bug causing crippled commands to the backup client.
+ Improved logging of error messages.
+
* 11 Jul 2008; Christian Kauhaus <kc(at)gocept.com>
goceptbackup-0.4.ebuild:
Implemented expiry and a restore wrapper.
Modified: gocept.infrastructure/trunk/util/backup/src/gocept/backup/metadata.py
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/metadata.py (original)
+++ gocept.infrastructure/trunk/util/backup/src/gocept/backup/metadata.py Thu
Aug 14 13:54:07 2008
(at)(at) -33,7 +33,6 (at)(at)
"""Query remote metadata (partitions, exclude list) by using ssh."""
self.log.info(u"Loading metadata from '%s'", self.host)
args = self.remotecmd() + [u'backupclient']
- self.log.debug(u'Running %s', u' '.join(args))
(stdout, stderr, returncode) = gocept.backup.shellcmd.shellcmd(
args[0], args[1:], 'metadata\n', accept_failure=True)
if returncode > 0:
(at)(at) -121,7 +120,6 (at)(at)
def host_reachable(self):
"""Return true if the host responds to ping."""
- self.log.debug(u'Running ping -c4 -q %s', self.host)
(stdout, stderr, returncode) = gocept.backup.shellcmd.shellcmd(
u'ping', [u'-c4', u'-q', self.host], accept_failure=True)
return (0 == returncode)
Modified: gocept.infrastructure/trunk/util/backup/src/gocept/backup/run.py
==============================================================================
--- gocept.infrastructure/trunk/util/backup/src/gocept/backup/run.py (original)
+++ gocept.infrastructure/trunk/util/backup/src/gocept/backup/run.py Thu Aug 14
13:54:07 2008
(at)(at) -58,7 +58,6 (at)(at)
def rdiff_backup(self, args):
"""Do the actual rdiff-backup call with ``args``.
"""
- self.log.debug(u'Running rdiff-backup %s' % u' '.join(args))
out, err, ret = gocept.backup.shellcmd.shellcmd(
u'rdiff-backup', args, accept_failure=True)
if out or err:
Modified: gocept.infrastructure/trunk/util/backup/src/gocept/backup/server.txt
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/server.txt (original)
+++ gocept.infrastructure/trunk/util/backup/src/gocept/backup/server.txt Thu
Aug 14 13:54:07 2008
(at)(at) -48,6 +48,7 (at)(at)
>>> show_log()
Checking SSH keys for [localhost]
Generating new SSH key pair for 'localhost'
+Running ssh-keygen -P -t rsa -f server/localhost/id_rsa_localhost
SSH key written to '...server/localhost/id_rsa_localhost'
Modified 'server/ssh_config'
Writing client config to 'backup_localhost.tar.gz'
(at)(at) -81,11 +82,9 (at)(at)
>>> show_log()
Checking...
Loading metadata from 'localhost'
-Running sudo backupclient
Unpacking metadata into '...server/localhost'
Calling backup on host 'localhost' for partition '/etc'
Acquiring lock: server/localhost/...
-Running rdiff-backup ...
Releasing lock: server/localhost/...
The individual steps of run() are discussed in detail below. After a host has
(at)(at) -172,7 +171,6 (at)(at)
>>> s.run()
>>> show_log()
Checking SSH keys for [localhost]
-Running ping ... localhost
Skipping localhost because of failed ping
All mocker expectations should have been met.
Modified: gocept.infrastructure/trunk/util/backup/src/gocept/backup/shellcmd.py
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/shellcmd.py (original)
+++ gocept.infrastructure/trunk/util/backup/src/gocept/backup/shellcmd.py Thu
Aug 14 13:54:07 2008
(at)(at) -12,18 +12,19 (at)(at)
"""
log = gocept.backup.log.Log().get()
command = [cmd]+list(args)
- #log.debug(u'Running %s', u' '.join(command))
+ log.debug(u'Running %s', u' '.join(command))
p = subprocess.Popen(command, stdin=subprocess.PIPE,
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- #if input:
- #log.debug(u'Writing %s', input)
+ if input:
+ log.debug(u'stdin: %s', input)
stdout, stderr = p.communicate(input)
if not accept_failure and p.returncode > 0:
+ log.debug(fmt(p.returncode, stdout, stderr))
raise RuntimeError(u"command '%s' failed with %s" % (
- u' '.join(command), fmt(p.returncode, stdout, stderr)))
+ u' '.join(command), p.returncode))
return (stdout, stderr, p.returncode)
def fmt(exitcode, out, err):
"""Format shell command result in an uniform way."""
- return u'exitcode %i, stdout <%s>, stderr <%s>' % (exitcode,
out, err)
+ return u'exitcode: %i\nstdout:\n%s\nstderr:\n%s' % (exitcode, out, err)
|
SVN: r6425 - gocept.infrastructure/trunk/util/backup/src/gocept/backup
Christian Kauhaus <kc(at)gocept.com> |
2008-08-14 14:09:54 |
[ FULL ]
|
Author: ckauhaus
Date: Thu Aug 14 14:09:52 2008
New Revision: 6425
Log:
skipped ping test for localhost; minor test refactoring
Modified:
gocept.infrastructure/trunk/util/backup/src/gocept/backup/metadata.py
gocept.infrastructure/trunk/util/backup/src/gocept/backup/server.txt
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_metadata.py
Modified: gocept.infrastructure/trunk/util/backup/src/gocept/backup/metadata.py
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/metadata.py (original)
+++ gocept.infrastructure/trunk/util/backup/src/gocept/backup/metadata.py Thu
Aug 14 14:09:52 2008
(at)(at) -120,6 +120,8 (at)(at)
def host_reachable(self):
"""Return true if the host responds to ping."""
+ if u'localhost' == self.host:
+ return True # localhost is always assumed to be reachable
(stdout, stderr, returncode) = gocept.backup.shellcmd.shellcmd(
u'ping', [u'-c4', u'-q', self.host], accept_failure=True)
return (0 == returncode)
Modified: gocept.infrastructure/trunk/util/backup/src/gocept/backup/server.txt
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/server.txt (original)
+++ gocept.infrastructure/trunk/util/backup/src/gocept/backup/server.txt Thu
Aug 14 14:09:52 2008
(at)(at) -13,7 +13,7 (at)(at)
... hostcfg = hosts.cfg
... """)
>>> file(u'hosts.cfg', 'w').write("""\
-... localhost # host comment
+... hostname # host comment
...
... # this is a comment after a whitespace line
... """)
(at)(at) -27,7 +27,7 (at)(at)
The server should parse the host file correctly:
>>> s.hosts
-[u'localhost']
+[u'hostname']
Note that the backup client does not use ssh for localhost access, but relies
on the ability to sudo without password instead. So better provide an
(at)(at) -44,19 +44,19 (at)(at)
with the '-c clienthost' option, a key is generated (if not already existent)
and all data for the client is packaged up conveniently:
->>> s.configure_client('localhost') # same as ./backupserver -c
localhost
+>>> s.configure_client('hostname') # same as ./backupserver -c
hostname
>>> show_log()
-Checking SSH keys for [localhost]
-Generating new SSH key pair for 'localhost'
-Running ssh-keygen -P -t rsa -f server/localhost/id_rsa_localhost
-SSH key written to '...server/localhost/id_rsa_localhost'
+Checking SSH keys for [hostname]
+Generating new SSH key pair for 'hostname'
+Running ssh-keygen -P -t rsa -f server/hostname/id_rsa_hostname
+SSH key written to '...server/hostname/id_rsa_hostname'
Modified 'server/ssh_config'
-Writing client config to 'backup_localhost.tar.gz'
+Writing client config to 'backup_hostname.tar.gz'
Install client and check it using ...
->>> set(['backup_localhost.tar.gz']) <= set(os.listdir('.'))
+>>> set(['backup_hostname.tar.gz']) <= set(os.listdir('.'))
True
->>> contents = tarfile.open(u'backup_localhost.tar.gz').getnames()
+>>> contents = tarfile.open(u'backup_hostname.tar.gz').getnames()
>>> contents.sort()
>>> print '\n'.join(contents)
README.txt
(at)(at) -81,17 +81,17 (at)(at)
>>> s.run()
>>> show_log()
Checking...
-Loading metadata from 'localhost'
-Unpacking metadata into '...server/localhost'
-Calling backup on host 'localhost' for partition '/etc'
-Acquiring lock: server/localhost/...
-Releasing lock: server/localhost/...
+Loading metadata from 'hostname'
+Unpacking metadata into '...server/hostname'
+Calling backup on host 'hostname' for partition '/etc'
+Acquiring lock: server/hostname/...
+Releasing lock: server/hostname/...
The individual steps of run() are discussed in detail below. After a host has
been successfully backed up, the ``success`` file in the host's state
directory is touched.
->>> os.path.exists(u'server/localhost/success')
+>>> os.path.exists(u'server/hostname/success')
True
(at)(at) -101,17 +101,17 (at)(at)
First, each client needs its own, unique ssh key for backup use. Client ssh
keys are checked and updated if necessary:
->>> set(('ssh_config', 'localhost')) <= set(os.listdir('server'))
+>>> set(('ssh_config', 'hostname')) <= set(os.listdir('server'))
True
->>> set(['id_rsa_localhost', 'id_rsa_localhost.pub']) <= \
-... set(os.listdir('server/localhost'))
+>>> set(['id_rsa_hostname', 'id_rsa_hostname.pub']) <= \
+... set(os.listdir('server/hostname'))
True
Also, host configuration is written to the ssh_config file:
>>> print file('server/ssh_config').read()
-Host localhost
+Host hostname
...
(at)(at) -122,14 +122,14 (at)(at)
and issues a 'metadata' command to the client. The client responds by sending
a
tar archive containing several metadata files.
->>> 'partitions' in os.listdir('server/localhost')
+>>> 'partitions' in os.listdir('server/hostname')
True
The tar archive is unpacked in the client's directory. It consists of the
'partitions' file which lists one partition to be backed up on each line.
Optinally, 'exclude' and 'include' files are transferred, too (not shown
here).
->>> print file('server/localhost/partitions').read()
+>>> print file('server/hostname/partitions').read()
/etc
(at)(at) -143,9 +143,9 (at)(at)
files.
>>> set(['passwd', 'rdiff-backup-data']) <= \
-... set(os.listdir('backup/localhost/etc'))
+... set(os.listdir('backup/hostname/etc'))
True
->>> summary = glob.glob('backup/localhost/etc/rdiff-backup-data/' +
+>>> summary = glob.glob('backup/hostname/etc/rdiff-backup-data/' +
... 'session_statistics.*.data')[0]
>>> re.search(r'^Errors 0$', file(summary).read(), re.M) >= 0
True
(at)(at) -167,11 +167,11 (at)(at)
>>> e = shellcmd(u'ping', mocker.ARGS, mocker.KWARGS)
>>> e = mock.result(('', '', 1))
>>> mock.replay()
->>> os.remove(u'server/localhost/success')
+>>> os.remove(u'server/hostname/success')
>>> s.run()
>>> show_log()
-Checking SSH keys for [localhost]
-Skipping localhost because of failed ping
+Checking SSH keys for [hostname]
+Skipping hostname because of failed ping
All mocker expectations should have been met.
(at)(at) -185,7 +185,7 (at)(at)
Delete test files:
>>> os.unlink(u'hosts.cfg')
->>> os.unlink(u'backup_localhost.tar.gz')
+>>> os.unlink(u'backup_hostname.tar.gz')
>>> os.unlink(u'backup_grampa.whq.gocept.com.tar.gz')
>>> shutil.rmtree(u'server')
>>> shutil.rmtree(u'backup')
(at)(at) -212,7 +212,7 (at)(at)
deleted:
>>> shutil.rmtree('server', ignore_errors=True)
- >>> shutil.rmtree('backup/localhost', ignore_errors=True)
+ >>> shutil.rmtree('backup/hostname', ignore_errors=True)
We suppress console output:
(at)(at) -241,12 +241,12 (at)(at)
>>> tar.close()
>>> mock = mocker.Mocker()
>>> shellcmd = mock.replace('gocept.backup.shellcmd.shellcmd')
- >>> e = mocker.expect(shellcmd('sudo', mocker.ARGS,
mocker.KWARGS)).result(
+ >>> e = mocker.expect(shellcmd('ssh', mocker.ARGS,
mocker.KWARGS)).result(
... (tar_content.getvalue(), '', 0))
>>> def create_mock_backup(*args, **kwargs):
- ... os.makedirs('backup/localhost/etc/rdiff-backup-data')
- ... file('backup/localhost/etc/passwd', 'w')
- ... file('backup/localhost/etc/rdiff-backup-data/' +
+ ... os.makedirs('backup/hostname/etc/rdiff-backup-data')
+ ... file('backup/hostname/etc/passwd', 'w')
+ ... file('backup/hostname/etc/rdiff-backup-data/' +
... 'session_statistics.2008-04-30T10:06:06+02:00.data',
... 'w').write(u'SourceFiles 1797\nErrors 0\n')
... return ('', '', 0)
Modified:
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_metadata.py
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_metadata.py (original)
+++
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_metadata.py Thu
Aug 14 14:09:52 2008
(at)(at) -25,7 +25,6 (at)(at)
except OSError:
pass
self.meta = gocept.backup.metadata.Metadata(u'hostname', self.conf)
- self.mock = mocker.Mocker()
def tearDown(self):
shutil.rmtree(self.statedir, ignore_errors=True)
(at)(at) -54,14 +53,14 (at)(at)
self.assertEqual(success, self.meta.successmarker)
def test_load_should_call_ssh(self):
- shellcmd = self.mock.replace('gocept.backup.shellcmd.shellcmd')
+ shellcmd = self.mocker.replace('gocept.backup.shellcmd.shellcmd')
shellcmd('ssh',
['-F', self.conf.sshconf, u'hostname', 'backupclient'],
'metadata\n',
mocker.KWARGS)
- self.mock.result(('tar-archive', '', 0))
+ self.mocker.result(('tar-archive', '', 0))
self.meta.unpack = lambda a: self.assert_(isinstance(a, basestring))
- self.mock.replay()
+ self.mocker.replay()
self.meta.load()
def test_unpack_should_fail_without_partitions(self):
(at)(at) -89,11 +88,11 (at)(at)
self.assertRaises(RuntimeError, self.meta.partitions)
def test_load_should_raise_on_failed_ssh(self):
- shellcmd = self.mock.replace('gocept.backup.shellcmd.shellcmd')
+ shellcmd = self.mocker.replace('gocept.backup.shellcmd.shellcmd')
shellcmd('ssh', mocker.ARGS, mocker.KWARGS)
- self.mock.result(('', 'host not found', 1))
+ self.mocker.result(('', 'host not found', 1))
self.meta.unpack = lambda a: self.fail("unpack() should not be
called")
- self.mock.replay()
+ self.mocker.replay()
self.assertRaises(gocept.backup.RemoteError, self.meta.load)
def test_remotecmd(self):
(at)(at) -112,10 +111,10 (at)(at)
self.assertEqual(exp, self.meta.remote_schema(u'cmd'))
def test_skippable_if_recent_success_marker(self):
- asctime = self.mock.replace(u'time.asctime')
+ asctime = self.mocker.replace(u'time.asctime')
mocker.expect(asctime()).result('Mon Jun 9 23:58:01 2008')
mocker.expect(asctime()).result('Mon Jun 9 23:59:00 2008')
- self.mock.replay()
+ self.mocker.replay()
self.meta.mark_success()
self.assertEqual(True, self.meta.host_skippable())
(at)(at) -123,26 +122,33 (at)(at)
self.assertEqual(False, self.meta.host_skippable())
def test_not_skippable_on_next_day(self):
- asctime = self.mock.replace(u'time.asctime')
+ asctime = self.mocker.replace(u'time.asctime')
mocker.expect(asctime()).result('Mon Jun 9 23:59:01 2008')
mocker.expect(asctime()).result('Tue Jun 10 00:00:00 2008')
- self.mock.replay()
+ self.mocker.replay()
self.meta.mark_success()
self.assertEqual(False, self.meta.host_skippable())
def test_host_unreachable(self):
- shellcmd = self.mock.replace('gocept.backup.shellcmd.shellcmd')
+ shellcmd = self.mocker.replace('gocept.backup.shellcmd.shellcmd')
shellcmd('ping', mocker.ARGS, mocker.KWARGS)
- self.mock.result(('', '', 1))
- self.mock.replay()
+ self.mocker.result(('', '', 1))
+ self.mocker.replay()
self.assertEqual(False, self.meta.host_reachable())
-
def test_host_reachable(self):
- shellcmd = self.mock.replace('gocept.backup.shellcmd.shellcmd')
+ shellcmd = self.mocker.replace('gocept.backup.shellcmd.shellcmd')
+ shellcmd('ping', mocker.ARGS, mocker.KWARGS)
+ self.mocker.result(('', '', 0))
+ self.mocker.replay()
+ self.assertEqual(True, self.meta.host_reachable())
+
+ def test_localhost_ping_should_be_skipped(self):
+ self.meta = gocept.backup.metadata.Metadata(u'localhost', self.conf)
+ shellcmd = self.mocker.replace('gocept.backup.shellcmd.shellcmd')
shellcmd('ping', mocker.ARGS, mocker.KWARGS)
- self.mock.result(('', '', 0))
- self.mock.replay()
+ self.mocker.count(0)
+ self.mocker.replay()
self.assertEqual(True, self.meta.host_reachable())
|
SVN: r6426 - gocept.infrastructure/trunk/util/backup/src/gocept/backup
Christian Kauhaus <kc(at)gocept.com> |
2008-08-14 14:18:49 |
[ FULL ]
|
Author: ckauhaus
Date: Thu Aug 14 14:18:48 2008
New Revision: 6426
Log:
Improved error reporting on remote rdiff-backup failures
Modified:
gocept.infrastructure/trunk/util/backup/src/gocept/backup/run.py
Modified: gocept.infrastructure/trunk/util/backup/src/gocept/backup/run.py
==============================================================================
--- gocept.infrastructure/trunk/util/backup/src/gocept/backup/run.py (original)
+++ gocept.infrastructure/trunk/util/backup/src/gocept/backup/run.py Thu Aug 14
14:18:48 2008
(at)(at) -60,13 +60,14 (at)(at)
"""
out, err, ret = gocept.backup.shellcmd.shellcmd(
u'rdiff-backup', args, accept_failure=True)
- if out or err:
- self.log.info(u'rdiff-backup(at)%s%s: %s%s',
- self.meta.host, self.partition, out, err)
if ret > 0:
- self.log.error(u'%s: hard error %i', self.meta.host, ret)
+ self.log.error(u'%s: returncode %i\nstdout:\n%s\nstderr:\n%s',
+ self.meta.host, ret, out, err)
raise gocept.backup.RemoteError, \
'rdiff-backup on %s failed with hard error' % self.meta.host
+ if out or err:
+ self.log.info(u'rdiff-backup(at)%s%s: %s%s',
+ self.meta.host, self.partition, out, err)
def lock(self):
"""Acquire lock to protect ourselves against concurrent backup
runs."""
|
SVN: r6427 - in gocept.infrastructure/trunk/util/backup/src/gocept/backup: . share
Christian Kauhaus <kc(at)gocept.com> |
2008-08-14 14:39:29 |
[ FULL ]
|
Author: ckauhaus
Date: Thu Aug 14 14:39:27 2008
New Revision: 6427
Log:
fixed bug [gocept #65548]: commented lines in /etc/fstab are now ignored even
if they are syntactically correct
Modified:
gocept.infrastructure/trunk/util/backup/src/gocept/backup/share/client.sh
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_client.py
Modified:
gocept.infrastructure/trunk/util/backup/src/gocept/backup/share/client.sh
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/share/client.sh (original)
+++
gocept.infrastructure/trunk/util/backup/src/gocept/backup/share/client.sh Thu
Aug 14 14:39:27 2008
(at)(at) -20,6 +20,9 (at)(at)
fi
cat "${ETCDIR}/fstab" | \
while read fs mountpoint fstype opts dump pass; do
+ if [[ ${fs} =~ ^\#.* ]]; then
+ continue
+ fi
if [[ ${dump} == 1 ]]; then
echo $mountpoint >> ${tmpdir}/partitions
fi
Modified:
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_client.py
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_client.py (original)
+++
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_client.py Thu
Aug 14 14:39:27 2008
(at)(at) -98,6 +98,7 (at)(at)
FSTAB_LINUX = """
# this is a comment
/dev/sda3 / ext3 defaults 1 1
+#/dev/BOOT /boot ext2 defailts 1 2
none /tmp tmpfs size=32m 0 0
/dev/vgsys/usr /usr ext3 defaults,nodev 0 2
/dev/vgsys/home /home ext3 defaults,nodev 1 2
|
SVN: r6428 - in gocept.infrastructure/trunk: portage-gocept/app-backup/gocept-backup util/backup/src util/backup/src/gocept util/backup/src/gocept/backup
Christian Kauhaus <kc(at)gocept.com> |
2008-08-14 15:07:13 |
[ FULL ]
|
Author: ckauhaus
Date: Thu Aug 14 15:07:11 2008
New Revision: 6428
Log:
fixed ebuild for gocept-backup 0.5
Modified:
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/ChangeLog
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/Manifest
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/gocept-backup-0.5.ebuild
gocept.infrastructure/trunk/util/backup/src/ (props changed)
gocept.infrastructure/trunk/util/backup/src/gocept/ (props changed)
gocept.infrastructure/trunk/util/backup/src/gocept/backup/ (props changed)
Modified:
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/ChangeLog
==============================================================================
---
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/ChangeLog (original)
+++
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/ChangeLog Thu
Aug 14 15:07:11 2008
(at)(at) -1,7 +1,10 (at)(at)
# ChangeLog for app-backup/goceptbackup
* 14 Aug 2008; Christian Kauhaus <kc(at)gocept.com>
goceptbackup-0.5.ebuild:
+ Fixed bug with commented fstab entries [gocept #65548].
+
Fixed unicode bug causing crippled commands to the backup client.
+
Improved logging of error messages.
* 11 Jul 2008; Christian Kauhaus <kc(at)gocept.com>
goceptbackup-0.4.ebuild:
Modified:
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/Manifest
==============================================================================
---
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/Manifest (original)
+++
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/Manifest Thu
Aug 14 15:07:11 2008
(at)(at) -1,8 +1,8 (at)(at)
AUX gocept-backup.cron 128 RMD160 2218457b50eb57219077fa83b33a4cd54fbfbf9e
SHA1 92c33dc4a95d308daf59a38d3061e839c9e76f59 SHA256
c400d029910530f19fb2e84ee7a520c482d8dc9d7734cee8ed3052ac9642d429
DIST bootstrap.py 1955 RMD160 fb1f4eaf0639d7f96516aef6425647d417c326ca SHA1
574a3920b6f705abacd828debaf75a041c6d2b95 SHA256
2fc70fce970cd1565787197898caa597a54f297c9533cb0e0d3b26b28a1b5435
-DIST gocept.backup-0.3.tar.gz 21684 RMD160
6e120a8bcad660f72281615e35df21eb767388b4 SHA1
eb6e6d12842e9192c48e4c1c503fef545d8b0d75 SHA256
a08134fba09377834706a72b09bae2cccbe11f75a377c447dbe8047fff726513
DIST gocept.backup-0.4.tar.gz 23858 RMD160
7f8422e92cd6890c68e950ed5d461c418136cca2 SHA1
57b31809d30b2ab0231ebe34f5656b6bc5996fe2 SHA256
77763de5c1a4a1282703332f6caec758da998448bb2139bbe5633e2d0ca9d76f
-EBUILD gocept-backup-0.3.ebuild 2377 RMD160
065e4db4cbab2c41dd1d3789703ea15aa6f8868e SHA1
c5e1e2ee016e897d9a872fe9f3ca2ab41f8e1e1b SHA256
f4e2688c658c47dad97594024a324f4e7f7508fd13f5e962a3e17296f9b2441d
+DIST gocept.backup-0.5.tar.gz 24484 RMD160
3815c9a91470e45089f1cdf4bf9a25fd4008fddb SHA1
0278f0d460c5543db0f2b8b4366d99d664903c41 SHA256
ca97b07049a73603d13206b40975cfb083fd6f2b24e8c032dd53c4cc84024e87
EBUILD gocept-backup-0.4.ebuild 2377 RMD160
065e4db4cbab2c41dd1d3789703ea15aa6f8868e SHA1
c5e1e2ee016e897d9a872fe9f3ca2ab41f8e1e1b SHA256
f4e2688c658c47dad97594024a324f4e7f7508fd13f5e962a3e17296f9b2441d
-MISC ChangeLog 377 RMD160 a347671d33eec2e4366787949eabe5047dc9be92 SHA1
5a1f4db3702491cafef85845943a10952bfe7d24 SHA256
cbabb6796fbfef13690160b5872989ed38f295753fc458c7379098e32c6f0b76
+EBUILD gocept-backup-0.5.ebuild 2511 RMD160
b3d10946adc64038d818f46c218c4262238a595e SHA1
4f75c5cff6ae0b3e4333b433240fcfcc7a59e48f SHA256
18cc0d7713a24c9db53a10501254e0309d69d57dd35d3b1d1c4a57d0327a1e25
+MISC ChangeLog 618 RMD160 dc6b7938fd90d26d0c36ad711e5ace6c069e220e SHA1
9b787d387a6e3a12cbffe8777b66248db5aa59c5 SHA256
f424239141cb6bb4500488a8cf1a54d2fcbae429e2ad806b28bd6179770a9a29
MISC metadata.xml 218 RMD160 958e011374ddfa7f75e36e1dac7d05b664288a40 SHA1
a88a4994979e6591d092a03249c1f27286cd6e1a SHA256
c7cf3413d937c023b0de4a026ba8f9f13614d8196b71bd53b3d636494c108773
Modified:
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/gocept-backup-0.5.ebuild
==============================================================================
---
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/gocept-backup-0.5.ebuild (original)
+++
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/gocept-backup-0.5.ebuild Thu
Aug 14 15:07:11 2008
(at)(at) -8,7 +8,7 (at)(at)
egg_name="gocept.backup"
egg_tar="${egg_name}-${PV}.tar.gz"
DESCRIPTION="gocept backup scripts"
-HOMEPAGE="http://www.gocept.com"
+HOMEPAGE="http://www.gocept.com/"
SRC_URI="http://amy.gocept.com/~ckauhaus/${egg_tar}
http://svn.zope.org/*checkout*/zc.buildout/trunk/bootstrap/bootstrap.py"
LICENSE="ZPL"
(at)(at) -60,11 +60,13 (at)(at)
etc-directory = \${buildout:etc-directory}
var-directory = \${buildout:var-directory}
backup-directory = \${buildout:backup-directory}
+location = \${buildout:parts-directory}/server.cfg
[hosts.cfg]
recipe = inquant.recipe.textfile
template-directory = \${buildout:template-directory}
template = hosts.cfg
+location = \${buildout:parts-directory}/hosts.cfg
__EOT__
python_version
|
SVN: r6429 - in gocept.infrastructure/trunk: portage-gocept/app-backup/gocept-backup util/backup/src/gocept/backup
Christian Kauhaus <kc(at)gocept.com> |
2008-08-18 07:24:24 |
[ FULL ]
|
Author: ckauhaus
Date: Mon Aug 18 07:24:21 2008
New Revision: 6429
Log:
changed ebuild to buildout-less mechanism; tests are not running anymore on my
laptop with Python 2.5
Added:
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/gocept-backup-0.5-r1.ebuild
Modified:
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/ChangeLog
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/Manifest
gocept.infrastructure/trunk/util/backup/src/gocept/backup/expire.py
gocept.infrastructure/trunk/util/backup/src/gocept/backup/restore.py
gocept.infrastructure/trunk/util/backup/src/gocept/backup/server.py
Modified:
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/ChangeLog
==============================================================================
---
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/ChangeLog (original)
+++
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/ChangeLog Mon
Aug 18 07:24:21 2008
(at)(at) -2,6 +2,11 (at)(at)
* 14 Aug 2008; Christian Kauhaus <kc(at)gocept.com>
goceptbackup-0.5.ebuild:
Fixed bug with commented fstab entries [gocept #65548].
+*gocept-backup-0.5-r1 (15 Aug 2008)
+
+ 15 Aug 2008; <> gocept-backup-0.5-r1.ebuild
+ buildout-less ebuild install
+
Fixed unicode bug causing crippled commands to the backup client.
Modified:
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/Manifest
==============================================================================
---
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/Manifest (original)
+++
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/Manifest Mon
Aug 18 07:24:21 2008
(at)(at) -3,6 +3,7 (at)(at)
DIST gocept.backup-0.4.tar.gz 23858 RMD160
7f8422e92cd6890c68e950ed5d461c418136cca2 SHA1
57b31809d30b2ab0231ebe34f5656b6bc5996fe2 SHA256
77763de5c1a4a1282703332f6caec758da998448bb2139bbe5633e2d0ca9d76f
DIST gocept.backup-0.5.tar.gz 24484 RMD160
3815c9a91470e45089f1cdf4bf9a25fd4008fddb SHA1
0278f0d460c5543db0f2b8b4366d99d664903c41 SHA256
ca97b07049a73603d13206b40975cfb083fd6f2b24e8c032dd53c4cc84024e87
EBUILD gocept-backup-0.4.ebuild 2377 RMD160
065e4db4cbab2c41dd1d3789703ea15aa6f8868e SHA1
c5e1e2ee016e897d9a872fe9f3ca2ab41f8e1e1b SHA256
f4e2688c658c47dad97594024a324f4e7f7508fd13f5e962a3e17296f9b2441d
+EBUILD gocept-backup-0.5-r1.ebuild 1343 RMD160
1f1d6d7d6025b0bc9e9e09bc582c013cc51c035c SHA1
5f5b9723190954a9993e3cd53aad13c6a6d7cd5d SHA256
ecc8dbd58017380c5308c8c4782fd29f30d361feffe366abfa53332ffba95e58
EBUILD gocept-backup-0.5.ebuild 2511 RMD160
b3d10946adc64038d818f46c218c4262238a595e SHA1
4f75c5cff6ae0b3e4333b433240fcfcc7a59e48f SHA256
18cc0d7713a24c9db53a10501254e0309d69d57dd35d3b1d1c4a57d0327a1e25
-MISC ChangeLog 618 RMD160 dc6b7938fd90d26d0c36ad711e5ace6c069e220e SHA1
9b787d387a6e3a12cbffe8777b66248db5aa59c5 SHA256
f424239141cb6bb4500488a8cf1a54d2fcbae429e2ad806b28bd6179770a9a29
+MISC ChangeLog 735 RMD160 b5a513c94f60a0dd02284688deaaa10a1262a39c SHA1
b39f7bb0affdef93abee62f49b397be1373f229a SHA256
d1c6c8ea1ced59f57f95bc2286fc1c556c72013b471e694952ea1f25f164a4af
MISC metadata.xml 218 RMD160 958e011374ddfa7f75e36e1dac7d05b664288a40 SHA1
a88a4994979e6591d092a03249c1f27286cd6e1a SHA256
c7cf3413d937c023b0de4a026ba8f9f13614d8196b71bd53b3d636494c108773
Added:
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/gocept-backup-0.5-r1.ebuild
==============================================================================
--- (empty file)
+++
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/gocept-backup-0.5-r1.ebuild Mon
Aug 18 07:24:21 2008
(at)(at) -0,0 +1,53 (at)(at)
+# Copyright 2008 gocept gmbh & co. kg
+# Distributed under the terms of the Zope Public License (ZPL) Version 2.1
+# $Header: $
+
+NEED_PYTHON="2.5"
+inherit distutils
+
+egg_name="gocept.backup"
+egg_tar="${egg_name}-${PV}.tar.gz"
+DESCRIPTION="gocept backup scripts"
+HOMEPAGE="http://www.gocept.com/"
+SRC_URI="http://amy.gocept.com/~ckauhaus/${egg_tar}"
+
+LICENSE="ZPL"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE=""
+
+RESTRICT="mirror"
+DEPEND="dev-python/setuptools >=app-backup/rdiff-backup-1.2.0"
+RDEPEND="${DEPEND}"
+S="${WORKDIR}/${egg_name}-${PV}"
+DOCS="doc/*"
+
+confdir="${ROOT}etc/${PN}"
+vardir="${ROOT}var/lib/${PN}"
+backupdir="${ROOT}var/${PN}"
+
+pkg_setup() {
+ enewgroup backup
+ enewuser backup -1 /bin/bash -1 backup
+}
+
+pkg_postinst() {
+ distutils_pkg_postinst
+ elog "If you want to take localhost backups, don't forget to write a "
+ elog "proper sudo rule allowing user backup to execute backupclient. "
+}
+
+src_install() {
+ distutils_src_install
+
+ insinto "${confdir}"
+ doins doc/hosts.cfg
+ newins doc/server.cfg.in server.cfg
+ dosed "s:%(etc-directory)s:${confdir}:" "${confdir}/server.cfg"
+ dosed "s:%(var-directory)s:${vardir}:" "${confdir}/server.cfg"
+ dosed "s:%(backup-directory)s:${backupdir}:" "${confdir}/server.cfg"
+ exeinto /etc/cron.hourly
+ doexe "${FILESDIR}/gocept-backup.cron"
+ diropts -o backup -g backup
+ dodir $vardir $backupdir
+}
Modified: gocept.infrastructure/trunk/util/backup/src/gocept/backup/expire.py
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/expire.py (original)
+++ gocept.infrastructure/trunk/util/backup/src/gocept/backup/expire.py Mon Aug
18 07:24:21 2008
(at)(at) -25,7 +25,6 (at)(at)
target]
def remove_old(self, args):
- self.log.debug(u'Running rdiff-backup %s' % u' '.join(args))
out, err, ret = gocept.backup.shellcmd.shellcmd(u'rdiff-backup', args)
if out or err:
self.log.info(u'rdiff-backup %s: %s%s',
Modified: gocept.infrastructure/trunk/util/backup/src/gocept/backup/restore.py
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/restore.py (original)
+++ gocept.infrastructure/trunk/util/backup/src/gocept/backup/restore.py Mon
Aug 18 07:24:21 2008
(at)(at) -70,6 +70,6 (at)(at)
gocept.backup.shellcmd.shellcmd(u'rdiff-backup', args)
-def main(configfile=None):
+def main(configfile='/etc/gocept-backup/server.cfg'):
restore = Restore(configfile)
restore.run()
Modified: gocept.infrastructure/trunk/util/backup/src/gocept/backup/server.py
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/server.py (original)
+++ gocept.infrastructure/trunk/util/backup/src/gocept/backup/server.py Mon Aug
18 07:24:21 2008
(at)(at) -137,6 +137,6 (at)(at)
self.conf.statedir, client)
-def main(configfile=None):
+def main(configfile='/etc/gocept-backup/server.cfg'):
s = Server(configfile)
s.action()
|
SVN: r6430 - in gocept.infrastructure/trunk/portage-gocept/sys-block: . open-iscsi open-iscsi/files
Christian Kauhaus <kc(at)gocept.com> |
2008-08-18 11:33:05 |
[ FULL ]
|
Author: ckauhaus
Date: Mon Aug 18 11:33:02 2008
New Revision: 6430
Log:
copied open-iscsi 2.0.869.2 from Gentoo bug #197136
Added:
gocept.infrastructure/trunk/portage-gocept/sys-block/
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/ChangeLog
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/Manifest
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/files/
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/files/initiatorname.iscsi
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/files/iscsid-2.0.868_rc1.conf.d
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/files/iscsid-2.0.868_rc1.init.d
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/files/iscsid-2.0.869.2.conf.d
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/files/iscsid-2.0.869.2.init.d
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/files/iscsid-init.d
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/metadata.xml
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/open-iscsi-2.0.865.12.ebuild
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/open-iscsi-2.0.868_rc1.ebuild
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/open-iscsi-2.0.869.2.ebuild
Added:
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/ChangeLog
==============================================================================
--- (empty file)
+++
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/ChangeLog Mon
Aug 18 11:33:02 2008
(at)(at) -0,0 +1,106 (at)(at)
+# ChangeLog for sys-block/open-iscsi
+# Copyright 1999-2008 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/sys-block/open-iscsi/ChangeLog,v 1.17
2008/08/08 06:22:02 ulm Exp $
+
+ 08 Aug 2008; Ulrich Mueller <ulm(at)gentoo.org> metadata.xml:
+ Add USE flag description to metadata wrt GLEP 56.
+
+*open-iscsi-2.0.868_rc1 (25 Mar 2008)
+
+ 25 Mar 2008; Mike Doty <kingtaco(at)gentoo.org>
+ +files/iscsid-2.0.868_rc1.conf.d, +files/iscsid-2.0.868_rc1.init.d,
+ +open-iscsi-2.0.868_rc1.ebuild:
+ adding open-iscsi-2.0.868_rc1.ebuild and related files thanks to Craig
+ <craig -at- haquarter.de> Bug 196096
+
+ 14 Jan 2008; Robin H. Johnson <robbat2(at)gentoo.org> metadata.xml:
+ Add herd per email.
+
+ 14 Jan 2008; Robin H. Johnson <robbat2(at)gentoo.org>
+ -files/r438-idbm-file-locking.diff, -files/backward-compile-2.6.13.patch,
+ -files/open-iscsi-485-out.state.patch, metadata.xml,
+ -open-iscsi-0.4.413.ebuild, -open-iscsi-0.4.413-r1.ebuild,
+ -open-iscsi-0.4.434.ebuild, -open-iscsi-0.4.438.ebuild,
+ -open-iscsi-0.5.485.ebuild, -open-iscsi-1.0.490.ebuild,
+ -open-iscsi-1.0.490-r1.ebuild, -open-iscsi-1.0.514.ebuild,
+ open-iscsi-2.0.865.12.ebuild:
+ Remove old ebuilds (they were for really old kernels), clean up remaining
+ ebuild, then remove myself from the metadata.
+
+*open-iscsi-2.0.865.12 (28 Aug 2007)
+
+ 28 Aug 2007; Mike Doty <kingtaco(at)gentoo.org> metadata.xml,
+ +open-iscsi-2.0.865.12.ebuild:
+ version bump
+
+ 22 Feb 2007; Markus Ullmann <jokey(at)gentoo.org> ChangeLog:
+ Redigest for Manifest2
+
+ 23 May 2006; Robin H. Johnson <robbat2(at)gentoo.org>
+ open-iscsi-1.0.514.ebuild:
+ Add ~ppc.
+
+ 08 Mar 2006; Robin H. Johnson <robbat2(at)gentoo.org>
+ files/initiatorname.iscsi:
+ Include instructions for initiatorname.iscsi.
+
+*open-iscsi-1.0.514 (07 Mar 2006)
+*open-iscsi-1.0.490-r1 (07 Mar 2006)
+*open-iscsi-1.0.490 (07 Mar 2006)
+
+ 07 Mar 2006; Robin H. Johnson <robbat2(at)gentoo.org>
+ +files/open-iscsi-485-out.state.patch, files/iscsid-init.d,
+ +open-iscsi-1.0.490.ebuild, +open-iscsi-1.0.490-r1.ebuild,
+ +open-iscsi-1.0.514.ebuild:
+ New upstream snapshots. Not for production use at all!.
+
+ 02 Feb 2006; Robin H. Johnson <robbat2(at)gentoo.org>
+ open-iscsi-0.5.485.ebuild:
+ Add missing dep on berkdb.
+
+*open-iscsi-0.5.485 (02 Feb 2006)
+
+ 02 Feb 2006; Robin H. Johnson <robbat2(at)gentoo.org>
+ +open-iscsi-0.5.485.ebuild:
+ New version.
+
+*open-iscsi-0.4.438 (06 Nov 2005)
+
+ 06 Nov 2005; Robin H. Johnson <robbat2(at)gentoo.org>
+ +files/r438-idbm-file-locking.diff, +files/backward-compile-2.6.13.patch,
+ +open-iscsi-0.4.438.ebuild:
+ Version bump. Custom patches for compile agasinst 2.6.13 or newer, and
+ possible IDBM corruption fix.
+
+*open-iscsi-0.4.434 (03 Nov 2005)
+
+ 03 Nov 2005; Robin H. Johnson <robbat2(at)gentoo.org>
+ +open-iscsi-0.4.434.ebuild:
+ Version bump.
+
+*open-iscsi-0.4.413-r1 (23 Sep 2005)
+
+ 23 Sep 2005; Robin H. Johnson <robbat2(at)gentoo.org>
files/iscsid-init.d,
+ +open-iscsi-0.4.413-r1.ebuild:
+ Add debug support, and improve init script to properly stop iscsid.
+
+ 21 Sep 2005; Robin H. Johnson <robbat2(at)gentoo.org>
+ files/digest-open-iscsi-0.4.413, Manifest:
+ Incorrect digest from duplicate tarball.
+
+ 20 Sep 2005; Robin H. Johnson <robbat2(at)gentoo.org>
files/iscsid-init.d,
+ open-iscsi-0.4.413.ebuild:
+ Change SRC_URI to mirror://gentoo/ now that the source has spread, also
+ clean up install location for modules, security of config file and
+ databases, and clean up the init script to be gentoo-like instead of
+ debian-like.
+
+*open-iscsi-0.4.413 (20 Sep 2005)
+
+ 20 Sep 2005; Robin H. Johnson <robbat2(at)gentoo.org>
+ +files/initiatorname.iscsi, +files/iscsid-init.d, +metadata.xml,
+ +open-iscsi-0.4.413.ebuild:
+ Initial commit. Ebuild by Robin H. Johnson <robbat2(at)gentoo.org>. A
special
+ thanks to The Gallery Group (www.thegallerygroup.com) for helping to support
+ iSCSI on Gentoo.
+
Added: gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/Manifest
==============================================================================
--- (empty file)
+++
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/Manifest Mon
Aug 18 11:33:02 2008
(at)(at) -0,0 +1,14 (at)(at)
+AUX initiatorname.iscsi 1282 RMD160 6af81c25d2704e2c6bb98ff5155de91cdbd17ff7
SHA1 2d2b0a50652772e0e3a16f3a90ef5977639b97ee SHA256
4ae558522881796f67ad5915ecf38d01e64c9d9768469847adb17405404485f3
+AUX iscsid-2.0.868_rc1.conf.d 242 RMD160
9de3648df641408c467c8c91e1fc52ae58a31b2d SHA1
27b32fcf0eca189658ccb1028d33892acd7556fb SHA256
4ca57ef1823aa9696d2be9e49da04dba00f2daa64feb8d9deb6c13f1112154f8
+AUX iscsid-2.0.868_rc1.init.d 1755 RMD160
f826a2ec99d4007193a12fb3ec3cf1defe5590a0 SHA1
f6e9099ba90215eafec6259fd7c6373aa36dad4b SHA256
1d8a89767b95e56d7bde552ba93ddc4ee541bbf384ff480b82ad7fc59f52b276
+AUX iscsid-2.0.869.2.conf.d 242 RMD160
9de3648df641408c467c8c91e1fc52ae58a31b2d SHA1
27b32fcf0eca189658ccb1028d33892acd7556fb SHA256
4ca57ef1823aa9696d2be9e49da04dba00f2daa64feb8d9deb6c13f1112154f8
+AUX iscsid-2.0.869.2.init.d 1807 RMD160
834d8c33b69b828dcd9824fd0a1c230abdf65da8 SHA1
ae2266aeb082101766f3d4aeee762471635cb259 SHA256
21d1a4fb05cec8b533c014db6e5282f4d115ce5a381fae0c14d347196cca068c
+AUX iscsid-init.d 2541 RMD160 cda6eddbf72c399127d74d7aca62769789dfe98a SHA1
34554031fa23fd1d397e11d6523a77061e4ab992 SHA256
60903a4a356f2a201c978e42b6adb6233ffcda6105000e1029d93d6406dad904
+DIST open-iscsi-2.0-865.12.tar.gz 230395 RMD160
b663cc4773a9ec55ce0e27de63e53d334a1e7111 SHA1
e5e6e23f7f8b624f29ffeecf80ed8332e0048718 SHA256
f6413d9d7f03bdcac76a3dfa3931a163553694937ae9170aa79ef3d91eae13e5
+DIST open-iscsi-2.0-868-rc1.tar.gz 275494 RMD160
22ed6b42710dd8bc652b3c467f7af89a12c2aa39 SHA1
7a1c84f04d2190075a125e897b717fac9a7332bb SHA256
0c3d956063e0c3d6f1d8ed12fae7e7ea109a1e5872abd362e2ab3e41674c7222
+DIST open-iscsi-2.0-869.2.tar.gz 279453 RMD160
890d07e5b7577c962803be0e5c9196dcaeba28b3 SHA1
bc0678eeb7e8cbd590269fa6cfb644fc90a214cb SHA256
933d752544ac33d5585d04256164b599f9ca8fb8aafdd4d7c204b0a98b9d393a
+EBUILD open-iscsi-2.0.865.12.ebuild 2572 RMD160
e6ac1699d340a98cd5155789191fb1fa5a08ab11 SHA1
2e5800ab5853179b014c4693ed8449b2cd301d48 SHA256
aa3ecb705af8564581cebfaaefb0c320fec04df6838fdfd7bd53fa061a2159fc
+EBUILD open-iscsi-2.0.868_rc1.ebuild 2625 RMD160
0f1e4ab6a8d25b203b563a233ec6244e2dbe5359 SHA1
a7d65c5575a055bccfcd665491b698c473963f0d SHA256
9e62208a5ab246712960fc8a13df9460125e507ee5cf60f3a139edd2eb64c554
+EBUILD open-iscsi-2.0.869.2.ebuild 2465 RMD160
65d40ee6031f184b31d900d3fa6e01efc86a22bf SHA1
595aa52bb5ad4ffe787f91547a04e1d9744b24fd SHA256
131b9322f3c00d1dabefb61a3c85c05bda7cc6e9c15b6200fe1b0c604769ad1d
+MISC ChangeLog 3861 RMD160 5d754a62fd69a7043458358c57ed78aea591eb58 SHA1
c38813493261efe4e2e21baf0928c1aaeee04365 SHA256
22998b8ba2ac6bc4fd7b6199d8d09256ef57d1d2c6ebe12f52362ed5c44c0bc0
+MISC metadata.xml 366 RMD160 e6901bcc9954fa2e7ebdc201be3f117f2769d11e SHA1
2f12a23a3bd4a33409183a32a99708dc4ce236e4 SHA256
023a201ecaa94699b402156f02c08c416e6eed0584f2096152605f3bef5df31a
Added:
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/files/initiatorname.iscsi
==============================================================================
--- (empty file)
+++
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/files/initiatorname.iscsi Mon
Aug 18 11:33:02 2008
(at)(at) -0,0 +1,31 (at)(at)
+# Copyright 1999-2005 Gentoo Technologies, Inc.
+# Distributed under the terms of the GNU General Public License, v2 or later
+# $Header:
/var/cvsroot/gentoo-x86/sys-block/open-iscsi/files/initiatorname.iscsi,v 1.2
2006/03/08 09:19:25 robbat2 Exp $
+#
+# This file must contain a InitiatorName entry!
+# white space is significent here!
+#InitiatorName=iqn.2005-09.tld.domain.hostname:openiscsi-initiator
+#InitiatorAlias=foobar
+
+# Sample documentation follows:
+
+# The InitiatorName should take the following format
+# iqn.${YEAR}-${MONTH}-${DOMAIN_REVERSED}.${HOSTNAME}:${UNIQUE_STRING}
+# Where YEAR and MONTH are the dates that your domain was registered.
+# You can use WHOIS to find when your domain was registered.
+# If you don't have a real domain in the outside world, invent one, but use
+# .local for your top-level.
+
+# Example case #1:
+# This assumes you own foobar.co.uk.
+# Domain name: foobar.co.uk.
+# Registration date: March 2001
+# Hostname: linux
+#
InitiatorName=iqn.2001-03.uk.co.foobar.linux:openiscsi-29b48ad602d5f83dd9cd9aa3ef741216
+
+# Example case #2:
+# This assumes you don't have a domain of your own.
+# Domain name: foobar.local
+# Registration date: March 2001
+# Hostname: linux
+#
InitiatorName=iqn.2001-03.local.foobar.linux:openiscsi-29b48ad602d5f83dd9cd9aa3ef741216
Added:
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/files/iscsid-2.0.868_rc1.conf.d
==============================================================================
--- (empty file)
+++
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/files/iscsid-2.0.868_rc1.conf.d Mon
Aug 18 11:33:02 2008
(at)(at) -0,0 +1,11 (at)(at)
+# /etc/conf.d/iscsid
+
+# config file to use
+CONFIG_FILE=/etc/iscsi/iscsid.conf
+
+# you need to specify an initiatorname in the file
+INITIATORNAME_FILE=/etc/iscsi/initiatorname.iscsi
+
+# options to pass to iscsid
+OPTS="-i ${INITIATORNAME_FILE}"
+
Added:
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/files/iscsid-2.0.868_rc1.init.d
==============================================================================
--- (empty file)
+++
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/files/iscsid-2.0.868_rc1.init.d Mon
Aug 18 11:33:02 2008
(at)(at) -0,0 +1,66 (at)(at)
+#!/sbin/runscript
+# Copyright 1999-2005 Gentoo Technologies, Inc.
+# Distributed under the terms of the GNU General Public License, v2 or later
+# $Header:
/var/cvsroot/gentoo-x86/sys-block/open-iscsi/files/iscsid-2.0.868_rc1.init.d,v
1.1 2008/03/25 02:33:04 kingtaco Exp $
+
+depend() {
+ after modules
+ use net
+}
+
+checkconfig() {
+ if [ ! -f $CONFIG_FILE ]; then
+ eerror "Config file $CONFIG_FILE does not exist!"
+ return 1
+ fi
+ if ! grep "^InitiatorName=iqn." ${INITIATORNAME_FILE} &>/dev/null;
then
+ ewarn "${INITIATORNAME_FILE} should contain a string with your initiatior
name."
+ IQN=iqn.$(date +%Y-%m).$(hostname -f | awk 'BEGIN { FS=".";}{x=NF; while
(x>0) {printf $x ;x--; if (x>0) printf ".";} print ""}'):openiscsi
+ IQN=${IQN}-$(echo ${RANDOM}${RANDOM}${RANDOM}${RANDOM}${RANDOM} | md5sum |
sed -e "s/\(.*\) -/\1/g" -e 's/ //g')
+ ebegin "Creating InitiatorName ${IQN} in ${INITIATORNAME_FILE}"
+ echo "InitiatorName=${IQN}" >> ${INITIATORNAME_FILE}
+ eend $?
+ fi
+}
+
+do_modules() {
+ msg="$1"
+ shift
+ modules="$1"
+ shift
+ opts="$(at)"
+ for m in ${modules}; do
+ ebegin "${msg} - ${m}"
+ modprobe ${opts} $m
+ ret=$?
+ eend $ret
+ [ $ret -ne 0 ] && return $ret
+ done
+ return 0
+}
+
+start() {
+ checkconfig
+ do_modules 'Loading iSCSI modules' 'scsi_transport_iscsi iscsi_tcp'
+ ret=$?
+ [ $ret -ne 0 ] && return 1
+ ebegin "Starting ${SVCNAME}"
+ start-stop-daemon --start --quiet --exec /usr/sbin/iscsid -- ${OPTS}
+ ret=$?
+ eend $ret
+ return $ret
+}
+
+stop() {
+ ebegin "Stopping ${SVCNAME}"
+ start-stop-daemon --signal HUP --stop --quiet --exec /usr/sbin/iscsid
#--pidfile $PID_FILE
+ eend $?
+
+ # ugly, but pid file is not removed by iscsid
+ rm -f $PID_FILE
+
+ do_modules 'Removing iSCSI modules' 'iscsi_tcp scsi_transport_iscsi' '-r'
+ ret=$?
+ return $ret
+}
+
Added:
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/files/iscsid-2.0.869.2.conf.d
==============================================================================
--- (empty file)
+++
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/files/iscsid-2.0.869.2.conf.d Mon
Aug 18 11:33:02 2008
(at)(at) -0,0 +1,11 (at)(at)
+# /etc/conf.d/iscsid
+
+# config file to use
+CONFIG_FILE=/etc/iscsi/iscsid.conf
+
+# you need to specify an initiatorname in the file
+INITIATORNAME_FILE=/etc/iscsi/initiatorname.iscsi
+
+# options to pass to iscsid
+OPTS="-i ${INITIATORNAME_FILE}"
+
Added:
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/files/iscsid-2.0.869.2.init.d
==============================================================================
--- (empty file)
+++
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/files/iscsid-2.0.869.2.init.d Mon
Aug 18 11:33:02 2008
(at)(at) -0,0 +1,70 (at)(at)
+#!/sbin/runscript
+# Copyright 1999-2005 Gentoo Technologies, Inc.
+# Distributed under the terms of the GNU General Public License, v2 or later
+# $Header: /var/cvsroot/gentoo-x86/sys-block/open-iscsi/files/iscsid-init.d,v
1.5 2008/03/09 08:26:46 craig Exp $
+
+depend() {
+ after modules
+ use net
+}
+
+checkconfig() {
+ if [ ! -f $CONFIG_FILE ]; then
+ eerror "Config file $CONFIG_FILE does not exist!"
+ return 1
+ fi
+ if ! grep "^InitiatorName=iqn." ${INITIATORNAME_FILE} &>/dev/null;
then
+ ewarn "${INITIATORNAME_FILE} should contain a string with your initiatior
name."
+ IQN=iqn.$(date +%Y-%m).$(hostname -f | awk 'BEGIN { FS=".";}{x=NF; while
(x>0) {printf $x ;x--; if (x>0) printf ".";} print ""}'):openiscsi
+ IQN=${IQN}-$(echo ${RANDOM}${RANDOM}${RANDOM}${RANDOM}${RANDOM} | md5sum |
sed -e "s/\(.*\) -/\1/g" -e 's/ //g')
+ ebegin "Creating InitiatorName ${IQN} in ${INITIATORNAME_FILE}"
+ echo "InitiatorName=${IQN}" >> ${INITIATORNAME_FILE}
+ eend $?
+ fi
+}
+
+do_modules() {
+ msg="$1"
+ shift
+ modules="$1"
+ shift
+ opts="$(at)"
+ for m in ${modules}
+ do
+ modprobe -l | if grep -q ${m}
+ then
+ ebegin "${msg} - ${m}"
+ modprobe ${opts} $m
+ ret=$?
+ eend $ret
+ [ $ret -ne 0 ] && return $ret
+ fi
+ done
+ return 0
+}
+
+start() {
+ checkconfig
+ do_modules 'Loading iSCSI modules' 'libiscsi scsi_transport_iscsi iscsi_tcp'
+ ret=$?
+ [ $ret -ne 0 ] && return 1
+ ebegin "Starting ${SVCNAME}"
+ start-stop-daemon --start --quiet --exec /usr/sbin/iscsid -- ${OPTS}
+ ret=$?
+ eend $ret
+ return $ret
+}
+
+stop() {
+ ebegin "Stopping ${SVCNAME}"
+ start-stop-daemon --signal HUP --stop --quiet --exec /usr/sbin/iscsid
#--pidfile $PID_FILE
+ eend $?
+
+ # ugly, but pid file is not removed by iscsid
+ rm -f $PID_FILE
+
+ do_modules 'Removing iSCSI modules' 'iscsi_tcp scsi_transport_iscsi libiscsi'
'-r'
+ ret=$?
+ return $ret
+}
+
Added:
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/files/iscsid-init.d
==============================================================================
--- (empty file)
+++
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/files/iscsid-init.d Mon
Aug 18 11:33:02 2008
(at)(at) -0,0 +1,95 (at)(at)
+#!/sbin/runscript
+# Copyright 1999-2005 Gentoo Technologies, Inc.
+# Distributed under the terms of the GNU General Public License, v2 or later
+# $Header: /var/cvsroot/gentoo-x86/sys-block/open-iscsi/files/iscsid-init.d,v
1.4 2006/03/07 08:26:46 robbat2 Exp $
+
+PID_FILE=/var/run/iscsid.pid
+CONFIG_FILE=/etc/iscsid.conf
+DUMP_DIR=/var/db/iscsi
+DUMP_NODE="${DUMP_DIR}/node.dump"
+DUMP_DISCOVERY="${DUMP_DIR}/discovery.dump"
+INITIATORNAME=/etc/initiatorname.iscsi
+DAEMON=/usr/sbin/iscsid
+NAME="iSCSI initiator service"
+
+depend() {
+ after modules
+ use net
+}
+
+checkconfig() {
+ if [ ! -f $CONFIG_FILE ]; then
+ eerror "Config file $CONFIG_FILE does not exist!"
+ return 1
+ fi
+ if [ ! -f $INITIATORNAME -o -z "$(egrep '^InitiatorName='
"${INITIATORNAME}")" ]; then
+ eerror "$INITIATORNAME should contain a string with your initiatior name,
eg:"
+ eerror "InitiatorName=iqn.2005-09.tld.domainname.hostname:initiator-name"
+ eerror "Initiator name file does not exist!"
+ return 1
+ fi
+}
+
+do_modules() {
+ msg="$1"
+ shift
+ modules="$1"
+ shift
+ opts="$(at)"
+ for m in ${modules}; do
+ ebegin "${msg} - ${m}"
+ modprobe ${opts} $m
+ ret=$?
+ eend $ret
+ [ $ret -ne 0 ] && return $ret
+ done
+ return 0
+}
+
+start() {
+ checkconfig || return 1
+ do_modules 'Loading iSCSI modules' 'scsi_transport_iscsi iscsi_tcp'
+ ret=$?
+ [ $ret -ne 0 ] && return 1
+ ebegin "Starting ${NAME}"
+ start-stop-daemon --start --exec $DAEMON --quiet
+ ret=$?
+ eend $ret
+ return $ret
+}
+
+stop() {
+ ebegin "Stopping ${NAME}"
+ start-stop-daemon --signal HUP --stop --quiet --exec $DAEMON #--pidfile
$PID_FILE
+ eend $?
+
+ # ugly, but pid file is not removed by iscsid
+ rm -f $PID_FILE
+
+ do_modules 'Removing iSCSI modules' 'iscsi_tcp scsi_transport_iscsi' '-r'
+ ret=$?
+ return $ret
+}
+
+opts="${opts} dump"
+
+dump() {
+ einfo "Starting dump of iscsid database (nodes)"
+ NODELIST="$(iscsiadm -m node | awk -F '[\\[\\]]' '{print $2}')"
+ [ -f ${DUMP_NODE} ] && mv -f ${DUMP_NODE} ${DUMP_NODE}.old
+ for i in $NODELIST ; do
+ echo "# $(iscsiadm -m node | egrep "^\[$i\]")" >>${DUMP_NODE}
+ iscsiadm -m node --record=$i >>${DUMP_NODE}
+ echo >>${DUMP_NODE}
+ done
+ einfo "Starting dump of iscsid database (discovery)"
+ DISCOVERYLIST="$(iscsiadm -m discovery | awk -F '[\\[\\]]' '{print $2}')"
+ [ -f ${DUMP_DISCOVERY} ] && mv -f ${DUMP_DISCOVERY}
${DUMP_DISCOVERY}.old
+ for i in $DISCOVERYLIST ; do
+ echo "# $(iscsiadm -m discovery | egrep "^\[$i\]")"
>>${DUMP_DISCOVERY}
+ iscsiadm -m discovery --record=$i >>${DUMP_DISCOVERY}
+ echo >>${DUMP_DISCOVERY}
+ done
+
+ einfo "Config dumped to ${DUMP_DIR}/"
+}
Added:
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/metadata.xml
==============================================================================
--- (empty file)
+++
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/metadata.xml Mon
Aug 18 11:33:02 2008
(at)(at) -0,0 +1,12 (at)(at)
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<herd>base-system</herd>
+<maintainer>
+ <email>kingtaco(at)gentoo.org</email>
+</maintainer>
+<use>
+ <flag name='modules'>Build the open-iscsi kernel modules</flag>
+ <flag name='utils'>Build the open-iscsi utilities</flag>
+</use>
+</pkgmetadata>
Added:
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/open-iscsi-2.0.865.12.ebuild
==============================================================================
--- (empty file)
+++
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/open-iscsi-2.0.865.12.ebuild Mon
Aug 18 11:33:02 2008
(at)(at) -0,0 +1,94 (at)(at)
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
/var/cvsroot/gentoo-x86/sys-block/open-iscsi/open-iscsi-2.0.865.12.ebuild,v 1.3
2008/01/14 01:29:00 robbat2 Exp $
+
+inherit versionator linux-mod eutils flag-o-matic
+
+DESCRIPTION="Open-iSCSI is a high performance, transport independent,
multi-platform implementation of RFC3720"
+HOMEPAGE="http://www.open-iscsi.org/"
+MY_PV="$(replace_version_separator 2 '-')"
+MY_SVN_R=865
+MY_P="${PN}-${MY_PV}"
+SRC_URI="http://www.open-iscsi.org/bits/${MY_P}.tar.gz"
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~x86 ~amd64 ~ppc"
+IUSE="debug"
+DEPEND="virtual/libc
+ virtual/linux-sources"
+RDEPEND="${DEPEND}
+ virtual/modutils
+ sys-apps/util-linux"
+
+S="${WORKDIR}/${MY_P}"
+
+MODULE_NAMES_ARG="kernel/drivers/scsi:${S}/kernel"
+MODULE_NAMES="iscsi_tcp(${MODULE_NAMES_ARG})
scsi_transport_iscsi(${MODULE_NAMES_ARG}) libiscsi(${MODULE_NAMES_ARG})"
+BUILD_TARGETS="all"
+CONFIG_CHECK="CRYPTO_CRC32C"
+ERROR_CFG="open-iscsi needs CRC32C support in your kernel."
+
+src_unpack() {
+ unpack ${A}
+ #export EPATCH_OPTS="-d${S}/kernel -p0"
+ export EPATCH_OPTS="-d${S}"
+ if [ $KV_PATCH -lt 15 ]; then
+ die "Sorry, your kernel must be 2.6.16-rc5 or newer!"
+ elif [ $KV_PATCH -eq 16 ]; then
+ einfo "2.6.16 or newer found."
+ einfo "Please file a bug if this does not compile."
+ fi
+
+ # clean up some junk
+ find "${S}" -name '*~' -exec rm \{} \; >/dev/null 2>/dev/null
+}
+
+src_compile() {
+ use debug && append-flags -DDEBUG_TCP -DDEBUG_SCSI
+
+ einfo "Building kernel modules"
+ export KSRC="${KERNEL_DIR}"
+ linux-mod_src_compile || die "failed to build modules"
+ einfo "Building userspace"
+ cd "${S}"/usr && \
+ CFLAGS="" emake OPTFLAGS="${CFLAGS}" \
+ || die "emake failed"
+}
+
+src_install() {
+ einfo "Installing kernel modules"
+ export KSRC="${KERNEL_DIR}"
+ #S=${S}/kernel
+ linux-mod_src_install
+
+ einfo "Installing userspace"
+ dosbin usr/iscsid usr/iscsiadm usr/iscsistart
+
+ einfo "Installing docs"
+ doman doc/*[1-8]
+ dodoc README THANKS
+ docinto test
+ dodoc test/*
+
+ einfo "Installing configuration"
+ insinto /etc
+ doins etc/iscsid.conf
+ doins "${FILESDIR}"/initiatorname.iscsi
+ newinitd "${FILESDIR}"/iscsid-init.d iscsid
+
+ # This is for later
+ # dosbin usr/iscsi_id
+ #insinto /etc/udev/rules.d/
+ #doins doc/iscsi-55.rules
+
+ # security
+ keepdir /var/db/iscsi
+ fperms 700 /var/db/iscsi
+ fperms 600 /etc/iscsid.conf
+}
+
+pkg_postinst() {
+ linux-mod_pkg_postinst
+ [ -d "${ROOT}"/var/db/iscsi ] && chmod 700 "${ROOT}"/var/db/iscsi
+ [ -f "${ROOT}"/etc/iscsid.conf ] && chmod 600
"${ROOT}"/etc/iscsid.conf
+}
Added:
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/open-iscsi-2.0.868_rc1.ebuild
==============================================================================
--- (empty file)
+++
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/open-iscsi-2.0.868_rc1.ebuild Mon
Aug 18 11:33:02 2008
(at)(at) -0,0 +1,101 (at)(at)
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
/var/cvsroot/gentoo-x86/sys-block/open-iscsi/open-iscsi-2.0.868_rc1.ebuild,v
1.1 2008/03/25 02:33:03 kingtaco Exp $
+
+inherit versionator linux-mod eutils flag-o-matic
+
+DESCRIPTION="Open-iSCSI is a high performance, transport independent,
multi-platform implementation of RFC3720"
+HOMEPAGE="http://www.open-iscsi.org/"
+MY_PV="$(replace_all_version_separators '-')"
+MY_PV="${PN}-$(replace_version_separator 1 "." $MY_PV)"
+SRC_URI="http://www.open-iscsi.org/bits/${MY_PV}.tar.gz"
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~x86 ~amd64 ~ppc ~mips"
+IUSE="modules utils debug"
+DEPEND="virtual/libc
+ virtual/linux-sources"
+RDEPEND="${DEPEND}
+ virtual/modutils
+ sys-apps/util-linux"
+
+S="${WORKDIR}/${MY_PV}"
+
+MODULE_NAMES_ARG="kernel/drivers/scsi:${S}/kernel"
+MODULE_NAMES="iscsi_tcp(${MODULE_NAMES_ARG})
scsi_transport_iscsi(${MODULE_NAMES_ARG}) libiscsi(${MODULE_NAMES_ARG})"
+BUILD_TARGETS="all"
+CONFIG_CHECK="CRYPTO_CRC32C"
+ERROR_CFG="open-iscsi needs CRC32C support in your kernel."
+
+src_unpack() {
+ unpack ${A}
+ export EPATCH_OPTS="-d${S}"
+ if [ $KV_PATCH -lt 15 ]; then
+ die "Sorry, your kernel must be 2.6.16-rc5 or newer!"
+ fi
+}
+
+src_compile() {
+ use debug && append-flags -DDEBUG_TCP -DDEBUG_SCSI
+
+ if use modules; then
+ einfo "Building kernel modules"
+ export KSRC="${KERNEL_DIR}"
+ linux-mod_src_compile || die "failed to build modules"
+ fi
+
+ einfo "Building fwparam_ibft"
+ cd "${S}"/utils/fwparam_ibft && \
+ CFLAGS="" emake OPTFLAGS="${CFLAGS}" \
+ || die "emake failed"
+
+ einfo "Building userspace"
+ cd "${S}"/usr && \
+ CFLAGS="" emake OPTFLAGS="${CFLAGS}" \
+ || die "emake failed"
+
+ if use utils; then
+ einfo "Building utils"
+ cd "${S}"/utils && \
+ CFLAGS="" emake OPTFLAGS="${CFLAGS}" \
+ || die "emake failed"
+ fi
+}
+
+src_install() {
+ if use modules; then
+ einfo "Installing kernel modules"
+ export KSRC="${KERNEL_DIR}"
+ linux-mod_src_install
+ fi
+
+ einfo "Installing userspace"
+ dosbin usr/iscsid usr/iscsiadm usr/iscsistart
+
+ if use utils; then
+ einfo "Installing utilities"
+ dosbin utils/iscsi-iname utils/iscsi_discovery
+ fi
+
+ einfo "Installing docs"
+ doman doc/*[1-8]
+ dodoc README THANKS
+ docinto test
+ dodoc test/*
+
+ einfo "Installing configuration"
+ insinto /etc/iscsi
+ doins etc/iscsid.conf
+ doins "${FILESDIR}"/initiatorname.iscsi
+ insinto /etc/conf.d
+ newins "${FILESDIR}"/iscsid-${PV}.conf.d iscsid
+ newinitd "${FILESDIR}"/iscsid-${PV}.init.d iscsid
+
+ keepdir /var/db/iscsi
+ fperms 700 /var/db/iscsi
+ fperms 600 /etc/iscsi/iscsid.conf
+}
+
+pkg_postinst() {
+ linux-mod_pkg_postinst
+}
Added:
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/open-iscsi-2.0.869.2.ebuild
==============================================================================
--- (empty file)
+++
gocept.infrastructure/trunk/portage-gocept/sys-block/open-iscsi/open-iscsi-2.0.869.2.ebuild Mon
Aug 18 11:33:02 2008
(at)(at) -0,0 +1,100 (at)(at)
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+inherit versionator linux-mod eutils flag-o-matic
+
+DESCRIPTION="Open-iSCSI is a high performance, transport independent,
multi-platform implementation of RFC3720"
+HOMEPAGE="http://www.open-iscsi.org/"
+MY_PV="${PN}-$(replace_version_separator 2 "-" $MY_PV)"
+SRC_URI="http://www.open-iscsi.org/bits/${MY_PV}.tar.gz"
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~x86 ~amd64 ~ppc ~mips"
+IUSE="modules utils debug"
+DEPEND="virtual/libc
+ virtual/linux-sources"
+RDEPEND="${DEPEND}
+ virtual/modutils
+ sys-apps/util-linux"
+
+S="${WORKDIR}/${MY_PV}"
+
+MODULE_NAMES_ARG="kernel/drivers/scsi:${S}/kernel"
+MODULE_NAMES="iscsi_tcp(${MODULE_NAMES_ARG})
scsi_transport_iscsi(${MODULE_NAMES_ARG}) libiscsi(${MODULE_NAMES_ARG})"
+BUILD_TARGETS="all"
+CONFIG_CHECK="CRYPTO_CRC32C"
+ERROR_CFG="open-iscsi needs CRC32C support in your kernel."
+
+src_unpack() {
+ unpack ${A}
+ export EPATCH_OPTS="-d${S}"
+ if [ $KV_PATCH -lt 15 ]; then
+ die "Sorry, your kernel must be 2.6.16-rc5 or newer!"
+ fi
+}
+
+src_compile() {
+ use debug && append-flags -DDEBUG_TCP -DDEBUG_SCSI
+
+ if use modules; then
+ einfo "Building kernel modules"
+ export KSRC="${KERNEL_DIR}"
+ linux-mod_src_compile || die "failed to build modules"
+ fi
+
+ einfo "Building fwparam_ibft"
+ cd "${S}"/utils/fwparam_ibft && \
+ CFLAGS="" emake OPTFLAGS="${CFLAGS}" \
+ || die "emake failed"
+
+ einfo "Building userspace"
+ cd "${S}"/usr && \
+ CFLAGS="" emake OPTFLAGS="${CFLAGS}" \
+ || die "emake failed"
+
+ if use utils; then
+ einfo "Building utils"
+ cd "${S}"/utils && \
+ CFLAGS="" emake OPTFLAGS="${CFLAGS}" \
+ || die "emake failed"
+ fi
+}
+
+src_install() {
+ if use modules; then
+ einfo "Installing kernel modules"
+ export KSRC="${KERNEL_DIR}"
+ linux-mod_src_install
+ fi
+
+ einfo "Installing userspace"
+ dosbin usr/iscsid usr/iscsiadm usr/iscsistart
+
+ if use utils; then
+ einfo "Installing utilities"
+ dosbin utils/iscsi-iname utils/iscsi_discovery
+ fi
+
+ einfo "Installing docs"
+ doman doc/*[1-8]
+ dodoc README THANKS
+ docinto test
+ dodoc test/*
+
+ einfo "Installing configuration"
+ insinto /etc/iscsi
+ doins etc/iscsid.conf
+ doins "${FILESDIR}"/initiatorname.iscsi
+ insinto /etc/conf.d
+ newins "${FILESDIR}"/iscsid-${PV}.conf.d iscsid
+ newinitd "${FILESDIR}"/iscsid-${PV}.init.d iscsid
+
+ keepdir /var/db/iscsi
+ fperms 700 /var/db/iscsi
+ fperms 600 /etc/iscsi/iscsid.conf
+}
+
+pkg_postinst() {
+ linux-mod_pkg_postinst
+}
|
SVN: r6431 - in gocept.infrastructure/trunk/doc: . storage
Christian Kauhaus <kc(at)gocept.com> |
2008-08-18 14:22:22 |
[ FULL ]
|
Author: ckauhaus
Date: Mon Aug 18 14:22:21 2008
New Revision: 6431
Log:
first benchmark results
Added:
gocept.infrastructure/trunk/doc/
gocept.infrastructure/trunk/doc/storage/ (props changed)
gocept.infrastructure/trunk/doc/storage/bonnie.csv
Added: gocept.infrastructure/trunk/doc/storage/bonnie.csv
==============================================================================
--- (empty file)
+++ gocept.infrastructure/trunk/doc/storage/bonnie.csv Mon Aug 18 14:22:21 2008
(at)(at) -0,0 +1,3 (at)(at)
+1.93c,1.93c,gollum-local,1,1219046997,4G,,229,99,75022,37,39896,14,1286,100,125162,18,888.7,16,256,,,,,26135,74,189659,100,7499,22,29546,81,300329,99,6014,18,38710us,557ms,635ms,12125us,1133ms,49109us,1146ms,769us,1329ms,293ms,43us,1552ms
+1.93c,1.93c,gollum-iscsi,1,1219046683,4G,,232,99,94763,58,38297,21,1172,100,67132,12,1538,36,256,,,,,21190,59,196076,99,14841,43,30128,83,299228,99,11891,37,41985us,724ms,2096ms,11199us,1170ms,62508us,1753ms,772us,408ms,310ms,46us,418ms
+1.93c,1.93c,stampy-local,1,1218777016,8G,,618,99,104139,20,57522,9,2584,96,161873,13,439.7,8,256,,,,,62772,89,492250,99,40161,54,66780,95,+++++,+++,33617,50,13477us,2275ms,1368ms,18775us,1067ms,626ms,89200us,159us,221ms,49385us,35us,127ms
|
SVN: r6432 - in gocept.infrastructure/trunk: portage-gocept/app-backup/gocept-backup util/backup
Christian Kauhaus <kc(at)gocept.com> |
2008-08-18 15:47:24 |
[ FULL ]
|
Author: ckauhaus
Date: Mon Aug 18 15:47:23 2008
New Revision: 6432
Log:
finishing buildout-less ebuild
Modified:
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/Manifest
gocept.infrastructure/trunk/util/backup/setup.py
Modified:
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/Manifest
==============================================================================
---
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/Manifest (original)
+++
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/Manifest Mon
Aug 18 15:47:23 2008
(at)(at) -1,7 +1,7 (at)(at)
AUX gocept-backup.cron 128 RMD160 2218457b50eb57219077fa83b33a4cd54fbfbf9e
SHA1 92c33dc4a95d308daf59a38d3061e839c9e76f59 SHA256
c400d029910530f19fb2e84ee7a520c482d8dc9d7734cee8ed3052ac9642d429
DIST bootstrap.py 1955 RMD160 fb1f4eaf0639d7f96516aef6425647d417c326ca SHA1
574a3920b6f705abacd828debaf75a041c6d2b95 SHA256
2fc70fce970cd1565787197898caa597a54f297c9533cb0e0d3b26b28a1b5435
DIST gocept.backup-0.4.tar.gz 23858 RMD160
7f8422e92cd6890c68e950ed5d461c418136cca2 SHA1
57b31809d30b2ab0231ebe34f5656b6bc5996fe2 SHA256
77763de5c1a4a1282703332f6caec758da998448bb2139bbe5633e2d0ca9d76f
-DIST gocept.backup-0.5.tar.gz 24484 RMD160
3815c9a91470e45089f1cdf4bf9a25fd4008fddb SHA1
0278f0d460c5543db0f2b8b4366d99d664903c41 SHA256
ca97b07049a73603d13206b40975cfb083fd6f2b24e8c032dd53c4cc84024e87
+DIST gocept.backup-0.5.tar.gz 24478 RMD160
a5418a6ef97382e37e2902d580d6613392b36921 SHA1
e78e39b725a62ec39cf814bb914860c98a208ad7 SHA256
a190e8f5d0bf441816b9aaa7355e5ea303eb4566c8be982abab62df99319b9a4
EBUILD gocept-backup-0.4.ebuild 2377 RMD160
065e4db4cbab2c41dd1d3789703ea15aa6f8868e SHA1
c5e1e2ee016e897d9a872fe9f3ca2ab41f8e1e1b SHA256
f4e2688c658c47dad97594024a324f4e7f7508fd13f5e962a3e17296f9b2441d
EBUILD gocept-backup-0.5-r1.ebuild 1343 RMD160
1f1d6d7d6025b0bc9e9e09bc582c013cc51c035c SHA1
5f5b9723190954a9993e3cd53aad13c6a6d7cd5d SHA256
ecc8dbd58017380c5308c8c4782fd29f30d361feffe366abfa53332ffba95e58
EBUILD gocept-backup-0.5.ebuild 2511 RMD160
b3d10946adc64038d818f46c218c4262238a595e SHA1
4f75c5cff6ae0b3e4333b433240fcfcc7a59e48f SHA256
18cc0d7713a24c9db53a10501254e0309d69d57dd35d3b1d1c4a57d0327a1e25
Modified: gocept.infrastructure/trunk/util/backup/setup.py
==============================================================================
--- gocept.infrastructure/trunk/util/backup/setup.py (original)
+++ gocept.infrastructure/trunk/util/backup/setup.py Mon Aug 18 15:47:23 2008
(at)(at) -19,7 +19,6 (at)(at)
package_dir={'': 'src'},
package_data={'gocept.backup': ['share/*']},
license='gocept proprietary',
- install_requires=['setuptools'],
extras_require={
'test': ['mocker']},
entry_points={
|
SVN: r6435 - gocept.infrastructure/trunk/doc/storage
Christian Kauhaus <kc(at)gocept.com> |
2008-08-19 17:58:51 |
[ FULL ]
|
Author: ckauhaus
Date: Tue Aug 19 17:58:50 2008
New Revision: 6435
Log:
neue Messergebnisse mit cyclops am Storage-Network
Modified:
gocept.infrastructure/trunk/doc/storage/bonnie.csv
Modified: gocept.infrastructure/trunk/doc/storage/bonnie.csv
==============================================================================
--- gocept.infrastructure/trunk/doc/storage/bonnie.csv (original)
+++ gocept.infrastructure/trunk/doc/storage/bonnie.csv Tue Aug 19 17:58:50 2008
(at)(at) -1,3 +1,5 (at)(at)
1.93c,1.93c,gollum-local,1,1219046997,4G,,229,99,75022,37,39896,14,1286,100,125162,18,888.7,16,256,,,,,26135,74,189659,100,7499,22,29546,81,300329,99,6014,18,38710us,557ms,635ms,12125us,1133ms,49109us,1146ms,769us,1329ms,293ms,43us,1552ms
1.93c,1.93c,gollum-iscsi,1,1219046683,4G,,232,99,94763,58,38297,21,1172,100,67132,12,1538,36,256,,,,,21190,59,196076,99,14841,43,30128,83,299228,99,11891,37,41985us,724ms,2096ms,11199us,1170ms,62508us,1753ms,772us,408ms,310ms,46us,418ms
1.93c,1.93c,stampy-local,1,1218777016,8G,,618,99,104139,20,57522,9,2584,96,161873,13,439.7,8,256,,,,,62772,89,492250,99,40161,54,66780,95,+++++,+++,33617,50,13477us,2275ms,1368ms,18775us,1067ms,626ms,89200us,159us,221ms,49385us,35us,127ms
+1.93c,1.93c,cyclops-local,1,1219165930,4G,,349,98,29792,18,15346,7,850,98,34318,9,141.1,7,256,,,,,17808,69,152732,100,9983,35,29308,67,167081,100,4433,17,48732us,2760ms,604ms,22163us,248ms,689ms,641ms,553us,1358ms,963ms,396us,2087ms
+1.93c,1.93c,cyclops-iscsi,1,1219165193,4G,,312,99,91343,59,30546,15,1272,98,62014,13,889.0,32,256,,,,,17726,65,145176,99,11882,44,19004,80,182023,99,11621,30,44419us,817ms,479ms,12408us,1022ms,76041us,409ms,56835us,1079ms,344ms,640us,449ms
|
SVN: r6436 - in gocept.infrastructure/trunk/util/backup: doc src/gocept/backup
Christian Kauhaus <kc(at)gocept.com> |
2008-08-19 18:00:57 |
[ FULL ]
|
Author: ckauhaus
Date: Tue Aug 19 18:00:55 2008
New Revision: 6436
Log:
fix bug [gocept #65834] with wrong include/exlucde parameter ordering
Modified:
gocept.infrastructure/trunk/util/backup/doc/link_dupes.sh
gocept.infrastructure/trunk/util/backup/src/gocept/backup/run.py
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_run.py
Modified: gocept.infrastructure/trunk/util/backup/doc/link_dupes.sh
==============================================================================
--- gocept.infrastructure/trunk/util/backup/doc/link_dupes.sh (original)
+++ gocept.infrastructure/trunk/util/backup/doc/link_dupes.sh Tue Aug 19
18:00:55 2008
(at)(at) -34,6 +34,10 (at)(at)
fi
# replace ${dupe} with symlink to ${orig}
if [[ -f ${dupe} && -f ${orig} ]]; then
+ if ! cmp "${orig}" "${dupe}"; then
+ echo "$0: skipping ${dupe}" >&2
+ continue;
+ fi
rm -f -- "${dupe}"
ln "${orig}" "${dupe}"
fi
Modified: gocept.infrastructure/trunk/util/backup/src/gocept/backup/run.py
==============================================================================
--- gocept.infrastructure/trunk/util/backup/src/gocept/backup/run.py (original)
+++ gocept.infrastructure/trunk/util/backup/src/gocept/backup/run.py Tue Aug 19
18:00:55 2008
(at)(at) -40,19 +40,19 (at)(at)
except OSError:
pass
args = [u'--force', u'--remote-schema',
- self.meta.remote_schema(u'rdiff-backup'),
- u'--exclude-other-filesystems']
- for excl in self.DEFAULT_EXCLUDE:
- args.extend([u'--exclude', os.path.join(self.partition, excl)])
- excl = self.meta.exclude(self.partition)
- if excl:
- for e in excl:
- args.extend([u'--exclude', e])
+ self.meta.remote_schema(u'rdiff-backup')]
incl = self.meta.include(self.partition)
if incl:
for i in incl:
args.extend([u'--include', i])
- args.extend([u'%s::%s' % (self.meta.host, self.partition),
self.target])
+ excl = self.meta.exclude(self.partition)
+ if excl:
+ for e in excl:
+ args.extend([u'--exclude', e])
+ for excl in self.DEFAULT_EXCLUDE:
+ args.extend([u'--exclude', os.path.join(self.partition, excl)])
+ args.extend([u'--exclude-other-filesystems',
+ u'%s::%s' % (self.meta.host, self.partition),
self.target])
return args
def rdiff_backup(self, args):
Modified: gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_run.py
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_run.py (original)
+++ gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_run.py Tue
Aug 19 18:00:55 2008
(at)(at) -32,8 +32,8 (at)(at)
self.runner = gocept.backup.run.Run(u'/etc', self.meta)
self.args = [u'--force', u'--remote-schema',
u'(echo rdiff-backup; cat) | sudo backupclient %s',
- u'--exclude-other-filesystems',
u'--exclude', u'/etc/lost+found',
+ u'--exclude-other-filesystems',
u'localhost::/etc',
os.path.join(self.meta.hostbackupdir, 'etc')]
self.datadir = os.path.join(self.meta.hostbackupdir, 'etc',
(at)(at) -61,10 +61,10 (at)(at)
def test_prepare_should_consider_exclude_include(self):
self.meta.excludes = [u'/etc/mtab', u'*~', u'/var/tmp']
self.meta.includes = [u'/etc/mtab-']
- self.args[-2:-2] = [
+ self.args[3:3] = [
+ u'--include', u'/etc/mtab-',
u'--exclude', u'/etc/mtab',
- u'--exclude', u'*~',
- u'--include', u'/etc/mtab-']
+ u'--exclude', u'*~']
self.assertEqual(self.args, self.runner.prepare())
def test_rdiff_backup_should_fail_on_remote_error(self):
|
SVN: r6437 - in gocept.infrastructure/trunk/util/backup/src/gocept/backup: . share
Christian Kauhaus <kc(at)gocept.com> |
2008-08-19 19:23:00 |
[ FULL ]
|
Author: ckauhaus
Date: Tue Aug 19 19:22:57 2008
New Revision: 6437
Log:
added /etc/gocept-backup/nobackup marker file to suppress backups [gocept
#65819]
Modified:
gocept.infrastructure/trunk/util/backup/src/gocept/backup/metadata.py
gocept.infrastructure/trunk/util/backup/src/gocept/backup/server.py
gocept.infrastructure/trunk/util/backup/src/gocept/backup/share/README.client.txt
gocept.infrastructure/trunk/util/backup/src/gocept/backup/share/client.sh
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_client.py
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_metadata.py
gocept.infrastructure/trunk/util/backup/src/gocept/backup/version.py
Modified: gocept.infrastructure/trunk/util/backup/src/gocept/backup/metadata.py
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/metadata.py (original)
+++ gocept.infrastructure/trunk/util/backup/src/gocept/backup/metadata.py Tue
Aug 19 19:22:57 2008
(at)(at) -28,6 +28,7 (at)(at)
self.excludes = []
self.includes = []
self.successmarker = os.path.join(self.hoststatedir, u'success')
+ self.activefile = os.path.join(self.hoststatedir, u'active')
def load(self):
"""Query remote metadata (partitions, exclude list) by using ssh."""
(at)(at) -56,16 +57,20 (at)(at)
pass
else:
for line in file(os.path.join(self.hoststatedir, f)):
- if line.startswith(u'#'):
+ if line.startswith(u'#'):
continue
getattr(self, u'%ss' % f).append(line.strip(u'\n'))
+ try:
+ tf.extract(u'active', self.hoststatedir)
+ except KeyError:
+ pass
def exclude(self, partition):
- return [excl for excl in self.excludes
+ return [excl for excl in self.excludes
if excl.find(partition) == 0 or not excl.startswith(u'/')]
def include(self, partition):
- return [incl for incl in self.includes
+ return [incl for incl in self.includes
if incl.find(partition) == 0 or not incl.startswith(u'/')]
def partitions(self):
(at)(at) -85,6 +90,11 (at)(at)
""" % (part, fn))
return self._partitions
+ def client_active(self):
+ """Return true if the backup client is active on the client."""
+ return (not os.access(self.activefile, os.F_OK) or
+ file(self.activefile).read().startswith(u'yes'))
+
def remotecmd(self, hostname=None):
"""Return the command to execute remote commands, usually ssh.
Modified: gocept.infrastructure/trunk/util/backup/src/gocept/backup/server.py
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/server.py (original)
+++ gocept.infrastructure/trunk/util/backup/src/gocept/backup/server.py Tue Aug
19 19:22:57 2008
(at)(at) -104,6 +104,9 (at)(at)
continue
try:
meta.load()
+ if not meta.client_active():
+ self.log.info(u'Client %s is not active', host)
+ continue
for partition in meta.partitions():
runner = gocept.backup.run.Run(partition, meta)
try:
Modified:
gocept.infrastructure/trunk/util/backup/src/gocept/backup/share/README.client.txt
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/share/README.client.txt (original)
+++
gocept.infrastructure/trunk/util/backup/src/gocept/backup/share/README.client.txt Tue
Aug 19 19:22:57 2008
(at)(at) -55,3 +55,17 (at)(at)
More details on how to specify exclude/include patterns can be found in
the rdiff-backup(1) man page.
+
+
+Suppressing backup runs
+-----------------------
+
+The client is polled by the server in a regular interval. If the client is
+reachable, a backup run is started. Sometimes, it may be not feasible to let
+backups run, for example when working on a low bandwith network connection.
+
+In this case, touch the file
+
+ /etc/gocept-backup/nobackup
+
+and no backups will be run. To resume backup activity, delete the file.
Modified:
gocept.infrastructure/trunk/util/backup/src/gocept/backup/share/client.sh
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/share/client.sh (original)
+++
gocept.infrastructure/trunk/util/backup/src/gocept/backup/share/client.sh Tue
Aug 19 19:22:57 2008
(at)(at) -4,7 +4,7 (at)(at)
# further actions.
set -e
-VERSION="0.5"
+VERSION="0.6"
ETCDIR="${ROOTDIR}/etc"
CONFDIR="${ETCDIR}/gocept-backup"
(at)(at) -29,8 +29,8 (at)(at)
done
}
-# Collect exclude/include list from magic files.
-exclude_include()
+# Collect client side config.
+configfiles()
{
local tmpdir=$1
local f
(at)(at) -42,6 +42,15 (at)(at)
done
}
+# Set nobackup flag depending on the existence of a ${CONFDIR}/nobackup file.
+nobackup() {
+ local tmpdir=$1
+ if [[ -f ${CONFDIR}/nobackup ]]; then
+ echo "no" > ${tmpdir}/active
+ else
+ echo "yes" > ${tmpdir}/active
+ fi
+}
# Gather metadata and send them as uncompressed tarball via stdout.
send_metadata()
(at)(at) -51,7 +60,8 (at)(at)
mkdir $tmp
trap "rm -rf $tmp" 0 1 2 3 5 15
partitions $tmp
- exclude_include $tmp
+ configfiles $tmp
+ nobackup $tmp
cd $tmp && tar -cf - *
}
Modified:
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_client.py
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_client.py (original)
+++
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_client.py Tue
Aug 19 19:22:57 2008
(at)(at) -40,11 +40,17 (at)(at)
return p
def assertMatch(self, regexp, string, message=None):
- """Helper method to perform regexp tests."""
+ """Helper method to perform regexp test."""
msg = message or u'Regular expression did not match'
self.assert_(re.search(regexp, string),
"%s: '%s' ~ /%s/" % (msg, string, regexp))
+ def assertNoMatch(self, regexp, string, message=None):
+ """Helper method to perform negative regexp test."""
+ msg = message or u"Regular expression did match but shouldn't"
+ self.assert_(not re.search(regexp, string),
+ "%s: '%s' !~ /%s/" % (msg, string, regexp))
+
def tar_files(self, tar_archive):
"""Return a list of file names contained in a tar archive."""
io = StringIO.StringIO(tar_archive)
(at)(at) -142,6 +148,15 (at)(at)
self.assert_(re.search(pat, output), u'pattern %r not found in %s' %
(pat, output))
+ def test_active_if_nobackup_not_found(self):
+ tar = self.shellout(self.CLIENT, u'metadata\n').stdout.read()
+ self.assertEqual(u'yes\n', self.tar_content(tar, u'active'))
+
+ def test_inactive_if_nobackup(self):
+ file(os.path.join(self.rootdir, u'etc/gocept-backup/nobackup'), 'w')
+ tar = self.shellout(self.CLIENT, u'metadata\n').stdout.read()
+ self.assertEqual(u'no\n', self.tar_content(tar, u'active'))
+
def test_suite():
suite = unittest.TestSuite()
Modified:
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_metadata.py
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_metadata.py (original)
+++
gocept.infrastructure/trunk/util/backup/src/gocept/backup/test_metadata.py Tue
Aug 19 19:22:57 2008
(at)(at) -175,8 +175,8 (at)(at)
u'exclude': u'*~\n'}))
def test_unpack_should_place_files_in_hostdir(self):
- self.assertEqual(set([u'partitions', u'include', u'exclude']),
- set(os.listdir(self.hoststate)))
+ expect = set([u'partitions', u'include', u'exclude'])
+ self.assertEqual(expect, set(os.listdir(self.hoststate)))
def test_exclude_for_root(self):
self.assertEqual([u'*~'], self.meta.exclude(u'/'))
(at)(at) -198,10 +198,24 (at)(at)
self.assertEqual([u'sudo'], self.meta.remotecmd())
+class MetadataSkipBackupTest(MetadataTestBase):
+
+ def test_client_active(self):
+ self.meta = gocept.backup.metadata.Metadata(u'hostname', self.conf)
+ self.assert_(self.meta.client_active())
+
+ def test_client_inactive(self):
+ self.meta = gocept.backup.metadata.Metadata(u'hostname', self.conf)
+ self.meta.unpack(self.construct_tar({
+ u'partitions': u'/\n', u'active': u'no\n'}))
+ self.assert_(not self.meta.client_active())
+
+
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(MetadataTest))
suite.addTest(unittest.makeSuite(MetadataMinimalFilesTest))
suite.addTest(unittest.makeSuite(MetadataIncludeExcludeTest))
suite.addTest(unittest.makeSuite(MetadataLocalhostTest))
+ suite.addTest(unittest.makeSuite(MetadataSkipBackupTest))
return suite
Modified: gocept.infrastructure/trunk/util/backup/src/gocept/backup/version.py
==============================================================================
---
gocept.infrastructure/trunk/util/backup/src/gocept/backup/version.py (original)
+++ gocept.infrastructure/trunk/util/backup/src/gocept/backup/version.py Tue
Aug 19 19:22:57 2008
(at)(at) -1,4 +1,4 (at)(at)
# Copyright (c) 2008 gocept gmbh & co. kg
# See also LICENSE.txt
-VERSION = u'0.5'
+VERSION = u'0.6'
|
SVN: r6438 - gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup
Christian Kauhaus <kc(at)gocept.com> |
2008-08-20 11:45:24 |
[ FULL ]
|
Author: ckauhaus
Date: Wed Aug 20 11:45:22 2008
New Revision: 6438
Log:
releasing gocept.backup 0.6
Added:
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/gocept-backup-0.6.ebuild
Removed:
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/gocept-backup-0.4.ebuild
Modified:
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/ChangeLog
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/Manifest
Modified:
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/ChangeLog
==============================================================================
---
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/ChangeLog (original)
+++
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/ChangeLog Wed
Aug 20 11:45:22 2008
(at)(at) -1,17 +1,25 (at)(at)
# ChangeLog for app-backup/goceptbackup
+# Copyright 1999-2008 Gentoo Foundation; Distributed under the GPL v2
+# $Header: $
-* 14 Aug 2008; Christian Kauhaus <kc(at)gocept.com>
goceptbackup-0.5.ebuild:
- Fixed bug with commented fstab entries [gocept #65548].
-*gocept-backup-0.5-r1 (15 Aug 2008)
+*gocept-backup-0.6 (20 Aug 2008)
- 15 Aug 2008; <> gocept-backup-0.5-r1.ebuild
- buildout-less ebuild install
+ 20 Aug 2008; Christian Kauhaus <kc(at)gocept.com>
gocept-backup-0.6.ebuild:
+ Require rdiff-backup 1.2. Fixed bug with include/exclude paramater ordering
so
+ that include files/dirs can now selectively overrule exclude dirs. Added
+ /etc/gocept-backup/nobackup marker file which existens stops backups from
+ being run on that client.
+* 15 Aug 2008; Christian Kauhaus <kc(at)gocept.com>
gocept-backup-0.5-r1.ebuild:
+ buildout-less ebuild install
Fixed unicode bug causing crippled commands to the backup client.
Improved logging of error messages.
+* 14 Aug 2008; Christian Kauhaus <kc(at)gocept.com>
goceptbackup-0.5.ebuild:
+ Fixed bug with commented fstab entries [gocept #65548].
+
* 11 Jul 2008; Christian Kauhaus <kc(at)gocept.com>
goceptbackup-0.4.ebuild:
Implemented expiry and a restore wrapper.
Modified:
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/Manifest
==============================================================================
---
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/Manifest (original)
+++
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/Manifest Wed
Aug 20 11:45:22 2008
(at)(at) -1,9 +1,9 (at)(at)
AUX gocept-backup.cron 128 RMD160 2218457b50eb57219077fa83b33a4cd54fbfbf9e
SHA1 92c33dc4a95d308daf59a38d3061e839c9e76f59 SHA256
c400d029910530f19fb2e84ee7a520c482d8dc9d7734cee8ed3052ac9642d429
DIST bootstrap.py 1955 RMD160 fb1f4eaf0639d7f96516aef6425647d417c326ca SHA1
574a3920b6f705abacd828debaf75a041c6d2b95 SHA256
2fc70fce970cd1565787197898caa597a54f297c9533cb0e0d3b26b28a1b5435
-DIST gocept.backup-0.4.tar.gz 23858 RMD160
7f8422e92cd6890c68e950ed5d461c418136cca2 SHA1
57b31809d30b2ab0231ebe34f5656b6bc5996fe2 SHA256
77763de5c1a4a1282703332f6caec758da998448bb2139bbe5633e2d0ca9d76f
DIST gocept.backup-0.5.tar.gz 24478 RMD160
a5418a6ef97382e37e2902d580d6613392b36921 SHA1
e78e39b725a62ec39cf814bb914860c98a208ad7 SHA256
a190e8f5d0bf441816b9aaa7355e5ea303eb4566c8be982abab62df99319b9a4
-EBUILD gocept-backup-0.4.ebuild 2377 RMD160
065e4db4cbab2c41dd1d3789703ea15aa6f8868e SHA1
c5e1e2ee016e897d9a872fe9f3ca2ab41f8e1e1b SHA256
f4e2688c658c47dad97594024a324f4e7f7508fd13f5e962a3e17296f9b2441d
+DIST gocept.backup-0.6.tar.gz 25114 RMD160
e96489bd6bec8bf7e09f6b1ffab5e65fe347216c SHA1
e87a5a3219abe5dc2fe34bf721898bf51a218425 SHA256
0119cc3140d3b2bbe9e069b94e6b43376acb9f8728c96701c9e3c7e9edd4eb24
EBUILD gocept-backup-0.5-r1.ebuild 1343 RMD160
1f1d6d7d6025b0bc9e9e09bc582c013cc51c035c SHA1
5f5b9723190954a9993e3cd53aad13c6a6d7cd5d SHA256
ecc8dbd58017380c5308c8c4782fd29f30d361feffe366abfa53332ffba95e58
EBUILD gocept-backup-0.5.ebuild 2511 RMD160
b3d10946adc64038d818f46c218c4262238a595e SHA1
4f75c5cff6ae0b3e4333b433240fcfcc7a59e48f SHA256
18cc0d7713a24c9db53a10501254e0309d69d57dd35d3b1d1c4a57d0327a1e25
-MISC ChangeLog 735 RMD160 b5a513c94f60a0dd02284688deaaa10a1262a39c SHA1
b39f7bb0affdef93abee62f49b397be1373f229a SHA256
d1c6c8ea1ced59f57f95bc2286fc1c556c72013b471e694952ea1f25f164a4af
+EBUILD gocept-backup-0.6.ebuild 1343 RMD160
1f1d6d7d6025b0bc9e9e09bc582c013cc51c035c SHA1
5f5b9723190954a9993e3cd53aad13c6a6d7cd5d SHA256
ecc8dbd58017380c5308c8c4782fd29f30d361feffe366abfa53332ffba95e58
+MISC ChangeLog 1181 RMD160 9ae32d859312f20a36e1eac94c1d2c8db7d9b781 SHA1
6a084d3a75a95cc8ba7e37d8f2cf88d9e5920533 SHA256
72ceba21526fb5ba8a59dc6bec473e4d03292acabc71637b8f4c52f1f5e588a0
MISC metadata.xml 218 RMD160 958e011374ddfa7f75e36e1dac7d05b664288a40 SHA1
a88a4994979e6591d092a03249c1f27286cd6e1a SHA256
c7cf3413d937c023b0de4a026ba8f9f13614d8196b71bd53b3d636494c108773
Added:
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/gocept-backup-0.6.ebuild
==============================================================================
--- (empty file)
+++
gocept.infrastructure/trunk/portage-gocept/app-backup/gocept-backup/gocept-backup-0.6.ebuild Wed
Aug 20 11:45:22 2008
(at)(at) -0,0 +1,53 (at)(at)
+# Copyright 2008 gocept gmbh & co. kg
+# Distributed under the terms of the Zope Public License (ZPL) Version 2.1
+# $Header: $
+
+NEED_PYTHON="2.5"
+inherit distutils
+
+egg_name="gocept.backup"
+egg_tar="${egg_name}-${PV}.tar.gz"
+DESCRIPTION="gocept backup scripts"
+HOMEPAGE="http://www.gocept.com/"
+SRC_URI="http://amy.gocept.com/~ckauhaus/${egg_tar}"
+
+LICENSE="ZPL"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE=""
+
+RESTRICT="mirror"
+DEPEND="dev-python/setuptools >=app-backup/rdiff-backup-1.2.0"
+RDEPEND="${DEPEND}"
+S="${WORKDIR}/${egg_name}-${PV}"
+DOCS="doc/*"
+
+confdir="${ROOT}etc/${PN}"
+vardir="${ROOT}var/lib/${PN}"
+backupdir="${ROOT}var/${PN}"
+
+pkg_setup() {
+ enewgroup backup
+ enewuser backup -1 /bin/bash -1 backup
+}
+
+pkg_postinst() {
+ distutils_pkg_postinst
+ elog "If you want to take localhost backups, don't forget to write a "
+ elog "proper sudo rule allowing user backup to execute backupclient. "
+}
+
+src_install() {
+ distutils_src_install
+
+ insinto "${confdir}"
+ doins doc/hosts.cfg
+ newins doc/server.cfg.in server.cfg
+ dosed "s:%(etc-directory)s:${confdir}:" "${confdir}/server.cfg"
+ dosed "s:%(var-directory)s:${vardir}:" "${confdir}/server.cfg"
+ dosed "s:%(backup-directory)s:${backupdir}:" "${confdir}/server.cfg"
+ exeinto /etc/cron.hourly
+ doexe "${FILESDIR}/gocept-backup.cron"
+ diropts -o backup -g backup
+ dodir $vardir $backupdir
+}
|
|