LoginSignup
1
1

More than 5 years have passed since last update.

シェルでNcFTPを使ってリモートのファイルをリネームして差し替える

Posted at
NcFTPでリモートのファイル名を変更する
#!/bin/bash

echo 'open -u ${USER} -p ${PASS} ${HOST}
cd ${BASE_DIR}
ls
rm -rf ${BACKUP_FILE}
rename ${CURRENT_FILE_NAME} ${BACKUP_FILE}
rename ${NEW_FILE_NAME} ${CURRENT_FILE_NAME}
ls
quit'|ncftp

ファイルを切り替える際に、Jenkinsから叩こうと思って書いたけど、結局却下して、下のpythonに変更した。

Pythonでリモートのファイル名を変更する
#!/usr/bin/env python
# -*- coding: utf-8 -*-

print 'python >>>'

import sys, os, datetime, re
from ftplib import FTP

ftp_host = 'ホスト名'
ftp_user = 'ユーザー名'
ftp_pass = 'パスワード'
ftp_base_dir = 'リネームするファイルのあるディレクトリ'
ftp_from_dir = '新しく公開するファイル'
ftp_to_dir = '現在公開中のファイル'
ftp_backup_prefix = '_'

def main(arg_user='', arg_pass='', *args):

    if arg_user == '' or arg_pass == '':
        print '  Rename directory failed'
        print '    Error: User or Password is not input.'
        return

    ftp_user = arg_user
    ftp_pass = arg_pass

    dt = str(datetime.datetime.utcnow())
    dt = dt.replace(':', '-')
    dt = dt.replace(' ', '_')
    dt = re.sub(r'\.\d+', '', dt)

    print '  Rename directory start >>> ' + dt

    try:
        ftp = FTP(ftp_host)
        ftp.login(ftp_user,ftp_pass)
        ftp.cwd(ftp_base_dir)
        file_list = ftp.nlst()
        if ftp_from_dir in file_list:
            ftp.rename(ftp_to_dir, ftp_backup_prefix+dt)
            ftp.rename(ftp_from_dir,ftp_to_dir)
        else:
            print '  Rename directory failed'
            print '    Error: NotFound New Directory'
        ftp.close()
        print '  Rename directory finished'

    except Exception as e:
        print '  Rename directory failed'
        print '    Error: ' + e.message


if __name__ == '__main__':
    sys.path.append(os.path.dirname(__file__))
    sys_args = sys.argv
    args = sys_args[1:] if len(sys_args) > 1 else []
    main(*args)
上のpythonを実行
python file_rename.py UserName Password

バックアップは、アップロードの時にすればいいから
古いファイルは削除でいい気がする。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1