mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-02 07:27:04 +00:00
new pro scripts
This commit is contained in:
50
scripts/seaf-backup-cmd.py
Executable file
50
scripts/seaf-backup-cmd.py
Executable file
@@ -0,0 +1,50 @@
|
||||
#!/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)
|
Reference in New Issue
Block a user