mirror of
https://github.com/haiwen/seahub.git
synced 2025-04-27 02:51:00 +00:00
51 lines
1.8 KiB
Python
Executable File
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)
|