하면 된다!!!

PSBB 업데이트 (2021년 2월 9일) - 끼따스 프로세스는?

인도네시아/생활정보 & 에피소드

PSBB (Pembatasan sosial berskala besar)가 연장 되면서 몇 가지 변경이 있네요.

적용 기간은 2월 22일까지입니다. 2주 단위로 계속 연장중이나 세부 내용들이 조금씩 바뀝니다.

 

1. 몰/상점 운영 : 9 PM (기존 20시)

2. 식당 : 정원의 50% (기존 정원의 25%)

3. 재택근무 : 정원의 50% (기존 정원의 25%)

 

이민국 관련해서도 변경이 있다고 하는데 공지가 이랬다 저랬다 바뀌고 있습니다.

끼따시 신청하시는 분들 많이 궁긍해들 하시는데... 

아침에 아래와 같은 공지가 인스타그랩에 올라왔었는데요. 지금은 삭제 되었습니다.

댓글을 통해서 C-312, C-317 비자등 프로세스 진행한다고 신청하다고 답변을 했었는데요.

현재는 확인이 안됩니다.

 

 

 

 

그리고 현재 visa online 사이트에 들어가면 아래 메시지가 아직 팝업 되고 있는 것으로 보아, 해외 체류중인 분들의 끼따스 프로세스 진행은 안되는 것으로 봐야할 듯합니다.

File Transfer - scp, rsync

프로그래밍/기타

 

서버 작업을 하다보면 서버와 서버 사이에 파일 전송 이슈가 있는 경우가 있다.

개인적으로 주로 SFTP나 FTP를 이용해서 파일을 전송했었는데... 요즘은 rsync 를 이용해서 파일 전송을 주로 하고 있습니다.

그중 많이 쓰이는 scp, rsync 에 대해서... 간단히 커맨드 정리 해둔다.

 

SCP (Secure Copy) 

ssh를 통해서 파일을 전송하는 도구로 서버에서 서버로 쌍방향 전송이 가능하다.

 

다른 장비로 파일 복사하기
scp -rp sourcedirectory user@dest:/path
-r means recursive
-p preserves modification times, access times, and modes from the original file.
scp *.pdf sean@123.12.1.123:/home/sean/download/
>> 모든 PDF 파일을 123.12.1.123 서버의 /home/sean/download 폴더로 복사
scp -rp ~/files sean@123.12.1.123:/home/sean/download/
>> files 폴더 이하에 있는 모든 파일을 123.12.1.123 서버의 /home/sean/download 폴더로 복사

 

다른 장비에서 파일 복사해오기
scp -rp user@dest:/path sourcedirectory
scp sean@123.12.1.123:/home/sean/download/*.pdf ./download
>> 123.12.1.123 서버의 /home/sean/download 폴더의 모든 PDF 파일을 ./download 폴더로 복사
scp -rp sean@123.12.1.123:/home/sean/download/ ~/files 
>> 123.12.1.123 서버의 /home/sean/download 폴더 하위의 모든 파일을 ~/files 폴더로 복사

참고로 파일명에 공백 등이 들어간 경우 " " 로 둘러싸주면 된다. ex) "abc file.txt" 

 

 

rsync

서버간에 파일을 동기화하는 도구이다. 이 또한 쌍방향 전송이 가능하다.

필자는 AWS에서 서버 관리를 주로 하고 있는데 인증 파일(.pem)을 이용해서 서버에 파일을 싱크할때 자주 사용하고 있다.

파일 싱크하기 (일반)
rsync -a -e ssh user@source-server:/source/ /dest/
rsync -a -e ssh /source/ user@source-server:/dest/

-a : archive mode (include a lot of default common options, including preserving symlinks)
-z : compress
-v : verbose : show files
-P : show progess as files done/remaining files
-e ssh : do rsync in ssh protocol
--delete : delete files in the destination that are not anymore in the source
rsync -avz -e ssh pi@123.12.1.123:download/ files/
>> 123.12.1.123 서버의 download 폴더의 파일을 ./files 폴더로 복사
rsync -avz -e ssh files/ pi@123.12.1.123:download/
>> ~/files 의 파일들을 123.12.1.123 서버의 /home/sean/download 폴더로 복사
인증서 파일 (.pem) 파일을 이용해서 싱크하기
sudo rsync -avzP -e "ssh -i /root/.ssh/my_certificate.pem" /source/ user@source-server:/dest/
sudo rsync -avzP -e "ssh -i /root/.ssh/my_certificate.pem" user@source-server:/source/ /dest/

 

[nodejs] AWS S3 file 관리하기

프로그래밍/Javascript

급작스럽게 AWS S3 에서 파일을 올리고, 내리고 관리할 일이 발생했는데 임시 작업 이라서 nodejs 를 이용해서 처리 하기로 결정했다.

개발했던 내용을 좀 정리 해둔다.

 

 

먼저 aws-sdk 를 설치해야한다.

 

$ npm install aws-sdk

 

간단하게 목록 조회, 업로드, 다운로드 함수 구현한 내용중 일부를 기록해 둔다~

const fs = require('fs');
const AWS = require('aws-sdk');

const s3 = new AWS.S3({
    accessKeyId: "Your API Access Key ID",
    secretAccessKey: "Your API Secret Access Key"
});

/**
 * Object List from AWS S3 bucket
 * @param {Bucket: XXX, Prefix: XXX, MaxKeys: xxx} params 
 */
const listObjects = params => {
    s3.listObjectsV2(params, function (err, data) {
        if (err) {
            console.log(err);
            throw err;
        } else {
            if (data != null && data != undefined) {
                let fileList = data.Contents;
                if (fileList != null && fileList.length > 0) {
                    fileList.forEach((fileInfo, idx) => {
                        console.log(fileInfo);
                    });
                }
            } else {
                console.log(params.Prefix, "is not exists.");
            }
        }
    });
}

listObjects({ Bucket: 'My Bucket Name', Prefix: "path/to/", MaxKeys: 1000 });

/**
 * Download file from AWS S3
 * @param {*} params 
 */
const downloadFile = params => {
    s3.getObject(params.downloadParams, function (s3Err, data) {
        if (s3Err) throw s3Err
        fs.writeFileSync(params.savePath, data.Body)
    console.log('file downloaded successfully')
    });
}

var downParams = {
    downloadParams: {
        Bucket: "My bucket name",
        Key: "My object key"
    },
    savePath: "/path/to/abcde.txt"
};
downloadFile(downParams);

/**
 * File Upload to AWS S3
 * @param {*} uploadInfo 
 */
const uploadFile = uploadInfo => {
    fs.readFile(uploadInfo.filePath, function(err, data) {
        if (err) throw err;
        const params = {
            Bucket: uploadInfo.Bucket,
            Key: uploadInfo.Key,
            Body: JSON.stringify(data, null, 2)
        };
        s3.upload(params, function (s3Err, uploadData) {
            if (s3Err) throw s3Err
            console.log(`File uploaded successfully at ${uploadData.Location}`)
        });
    });
}

uploadFile({
    Bucket: "My Bucket Name",
    Key: "upload path and object key",
    filePath: "/path/to/abcde.txt"
});