Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.
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

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

seyself
bascule
DATA × TECHNOLOGY × DESIGN
http://www.bascule.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away