1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-04-27 02:51:00 +00:00
seahub/scripts/seaf-backup-cmd.py
2021-12-04 10:45:31 +08:00

51 lines
1.8 KiB
Python
Executable File

#!/usr/bin/env python3
#coding: utf-8
import json
import argparse
from seaserv import seafile_api
from pysearpc import SearpcError
def show_backup_status(args):
ret_str = seafile_api.get_backup_status()
ret_dict = json.loads(ret_str)
print('Total number of libraries: %s' % ret_dict['n_total'])
print('Number of synchronized libraries: %s' % ret_dict['n_synced'])
print('Number of libraries waiting for sync: %s' % ret_dict['n_waiting'])
print('Number of libraries syncing: %s' % ret_dict['n_syncing'])
print('Number of libraries failed to sync: %s\n' % ret_dict['n_error'])
print('List of syncing libraries:')
for repo in ret_dict['syncing_repos']:
print(repo)
print('')
print('List of libraries failed to sync:')
for repo in ret_dict['error_repos']:
print(repo)
def sync_repo(args):
if len(args.repo_id) != 36:
print('Invalid repo id %s.' % args.repo_id)
return
try:
seafile_api.sync_repo_manually(args.repo_id, 1 if args.force else 0)
except SearpcError as e:
print('Failed to sync repo %s: %s.' % (args.repo_id, e))
else:
print('Sync repo %s successfully.' % args.repo_id)
if __name__ == "__main__":
parser = argparse.ArgumentParser()
subparser = parser.add_subparsers(title='subcommands', description='')
status_parser = subparser.add_parser('status', help='get backup status')
status_parser.set_defaults(func=show_backup_status)
sync_parser = subparser.add_parser('sync', help='sync repo')
sync_parser.add_argument('-f', '--force', help='force sync repo', action='store_true')
sync_parser.add_argument('repo_id', help='repo id to sync')
sync_parser.set_defaults(func=sync_repo)
args = parser.parse_args()
args.func(args)