コード例 #1
0
ファイル: aws-backup.py プロジェクト: pombredanne/awstools
                datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
                self.xfs_filesystem, self.ebs_volume)
            ec2.create_snapshot(self.ebs_volume, description)

            if self.xfs_filesystem:
                self.run_cmd('xfs_freeze -u %s' % self.xfs_filesystem)

        # filesystem
        if paths:
            self.log('creating archive %s [%s]' % (self.backup_file, ', '.join(paths)))
            tf = tarfile.open(self.backup_file, 'w:gz')
            for p in paths:
                tf.add(p)
            tf.close()
            self.s3_upload(self.backup_s3, self.backup_file)

    def restore(self):
        # packages
        self.s3_download(self.dpkg_s3, self.dpkg_file)
        self.run_cmd('dpkg --set-selections < %s && apt-get -y dselect-upgrade' % self.dpkg_file)

        # filesystem
        self.s3_download(self.backup_s3, self.backup_file)
        self.log('extracting archive %s' % self.backup_file)
        tf = tarfile.open(self.backup_file)
        tf.extractall('/')


if __name__ == '__main__':
    run_aws_command(AWSBackup)
コード例 #2
0
ファイル: aws-addvolume.py プロジェクト: pombredanne/awstools
        # create and attach an EBS device
        volume = ec2.create_volume(size, zone)
        available_devices = ['/dev/sdf', '/dev/sdg', '/dev/sdh', '/dev/sdi',
                             '/dev/sdj', '/dev/sdk', '/dev/sdl', '/dev/sdm',
                             '/dev/sdn', '/dev/sdo', '/dev/sdp', ]
        for dev in available_devices:
            try:
                volume.attach(instance, dev)
                self.log('attached volume at %s' % dev)
                break
            except BotoServerError:
                pass
        else:
            volume.delete()
            raise AWSError('failed to find available device')

        # wait 5 seconds for EBS device to connect
        time.sleep(5)

        # mount EBS device as XFS filesystem
        self.run_cmd('mkfs.xfs %s' % dev)
        self.run_cmd('mkdir -p %s' % path)
        fstab_line = '%s %s xfs defaults 0 0' % (dev, path)
        self.run_cmd('echo "%s" >> /etc/fstab' % fstab_line)
        self.run_cmd('mount %s' % path)


if __name__ == '__main__':
    run_aws_command(AddVolume)