MySqlCommand dbcmd = _conn.CreateCommand();
dbcmd.CommandText = sqlCommandString;
dbcmd.ExecuteNonQuery();
long imageId = dbcmd.LastInsertedId;
http://stackoverflow.com/questions/8517841/mysql-last-insert-id-connector-net
2016년 5월 27일 금요일
2016년 3월 25일 금요일
mysql INSERT INTO table ON DUPLICATE KEY UPDATE table
mySQL에서 있으면 수정하고 없으면 추가
create table machine(
machine_id int not null primary key
, machine_name varchar(50)
, reg_id int );
INSERT INTO machine (reg_id, machine_id, machine_name) VALUES (1, 1, 'test_machine')
ON DUPLICATE KEY
UPDATE machine_name=VALUES(machine_name);
출처 http://stackoverflow.com/questions/5528854/usage-of-mysqls-if-exists
create table machine(
machine_id int not null primary key
, machine_name varchar(50)
, reg_id int );
INSERT INTO machine (reg_id, machine_id, machine_name) VALUES (1, 1, 'test_machine')
ON DUPLICATE KEY
UPDATE machine_name=VALUES(machine_name);
출처 http://stackoverflow.com/questions/5528854/usage-of-mysqls-if-exists
2016년 3월 21일 월요일
SQL Query SerialNumber
요즘은 주로 mariaDB나 mysql을 사용하는 편인데
ms-sql을 사용할 일이 생겼다.
조회결과에 일련번호를 붙이고 싶은데
다음과 같이 하였다.
DB별로, 버전별로 차이가 있으니 사용시 여기저기 찿아보고 테스트후 사용하시길...
MS-SQL2005이상 :
select ROW_NUMBER() OVER(ORDER BY Co_Code) AS RowNum,
column1, column2
from mssql2005Table
MySQL:
SET @ROW_NUMBER = 0;
select @ROW_NUMBER := @ROW_NUMBER+1 rNo, column1, column2
from mySQLTable
Oracle:
select rownum, column1, column2
from OracleTable
ms-sql을 사용할 일이 생겼다.
조회결과에 일련번호를 붙이고 싶은데
다음과 같이 하였다.
DB별로, 버전별로 차이가 있으니 사용시 여기저기 찿아보고 테스트후 사용하시길...
MS-SQL2005이상 :
select ROW_NUMBER() OVER(ORDER BY Co_Code) AS RowNum,
column1, column2
from mssql2005Table
MySQL:
SET @ROW_NUMBER = 0;
select @ROW_NUMBER := @ROW_NUMBER+1 rNo, column1, column2
from mySQLTable
Oracle:
select rownum, column1, column2
from OracleTable
c# WinForm Dock Order Change
c# winform으로 개발 중
1. panel위에 버턴을 배치하고
2. 버턴의 속성에서 Dock를 Right로 선택하면
해당 버턴은 가장 오른쪽으로 가서 철석 달라 붙습니다.
참 편리한 기능입니다.
3. 두번째 버턴도 Right속성을 주면 역시 오른쪽에 철석 달라 붙습니다.
참 편리합니다.
4. 첫번째 버턴의 왼쪽에 철석 달라 붙은 두번째 버턴을 가장 오른쪽으로 보내고 싶습니다.
잘 안됩니다.
참 불편합니다.
이럴때는
메뉴/보기/다른창/문서개요 를 열어보면

화면에 추가했던 리소스들이 나열되어 있다.
여기서 이동하고 싶은 리소스를 선택하여 드래그 하여 순서를 바꾸면
버턴의 위치가 바뀌어 있음을 볼 수 있다.
참조 http://stackoverflow.com/questions/154543/panel-dock-fill-ignoring-other-panel-dock-setting
1. panel위에 버턴을 배치하고
2. 버턴의 속성에서 Dock를 Right로 선택하면
해당 버턴은 가장 오른쪽으로 가서 철석 달라 붙습니다.
참 편리한 기능입니다.
3. 두번째 버턴도 Right속성을 주면 역시 오른쪽에 철석 달라 붙습니다.
참 편리합니다.
4. 첫번째 버턴의 왼쪽에 철석 달라 붙은 두번째 버턴을 가장 오른쪽으로 보내고 싶습니다.
잘 안됩니다.
참 불편합니다.
이럴때는
메뉴/보기/다른창/문서개요 를 열어보면
화면에 추가했던 리소스들이 나열되어 있다.
여기서 이동하고 싶은 리소스를 선택하여 드래그 하여 순서를 바꾸면
버턴의 위치가 바뀌어 있음을 볼 수 있다.
참조 http://stackoverflow.com/questions/154543/panel-dock-fill-ignoring-other-panel-dock-setting
2016년 2월 18일 목요일
VNC Viewer setting on Raspberry Pi 2
VNC Viewer setting on
sudo apt-get update
sudo apt-get upgrade

sudo apt-get install tightvncserver
설치하는 중간에 disk를 얼마를 쓸텐데 계속할꺼냐고 묻는다.
당연히 y
설치가 끝나면
tightvncserver로 Raspberry pi로 접근할 password를 설정한다.
tightvncserver
이제 'X' desktop 화면 :1 의 password세팅를 세팅했습니다.
vncserver :1 -geometry 1024x768
부팅 시 자동 시작되도록 스크립트 작성. 이후 단계는 /etc/init.d 디렉토리 내에서 진행.
/etc/init.d 디렉토리로 이동 후
vncboot 라는 파일 작성(파일 이름은 마음대로)하고 아래 단계에 따라 진행
참고로 파일 내용 중
/usr/bin/vncserver :1 -geometry 1280x800 -depth 16
이 부분을 사용자 취향에 맞게 수정해주면 됨
더 높은 해상도 및 컬리를 원한다면
/usr/bin/vncserver :1 -geometry 1920x1080 -depth 24
이렇게 변경해줌
:1은 screen id를 지정해주는 부분임.
client 에서 접속 시 해당 screen id로 접속하게됨.
파일 내용은 아래와 같음.
사용자 id, home path 입력 부분에 client 접속 시 필요한 사용자의 정보를 입력.
#!/bin/sh
#/etc/init.d/vncboot
### BEGIN INIT INFO
# Provides: vncboot
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start VNC Server at boot time
# Description: Start VNC Server at boot time.
### END INIT INFO
USER=<사용자 ID 입력, ex:root>
HOME=<사용자 home 입력, ex: /root>
export USER HOME
case "$1" in
start)
echo "Starting VNC Server"
#Insert your favoured settings for a VNC session
su <사용자 id 입력, ex: root> -c '/usr/bin/vncserver :1 -geometry 1920x1080 -depth 24'
;;
stop)
echo "Stopping VNC Server"
/usr/bin/vncserver -kill :1
;;
*)
echo "Usage: /etc/init.d/vncboot {start|stop}"
exit 1
;;
esac
exit 0
파일 permission 변경
처음 실행 후 암호설정
client에서 접속 시 사용할 암호를 입력해줌.
부팅 시 자동실행 되도록 등록
raspberry pi 재부팅
client 프로그램 다운로드
이제 raspberryPi에서의 설정은 끝났다.
다시 윈도로 돌아와서
www.tightvnc.com 로 들어가서
TightVNC를 다운로드합니다.
64bit, 32bit중 입맛에 맞는 것을 선택해서 다운로드해서
Windows에 설치합니다.
vncview를 실행하고 ip와 화면 번호를 입력하면
RaspberryPi에서 설정한 password를 묻습니다.
입력하면
pi's X desktop TigerVNC화면이 열립니다.
putty화면과는 차이가 있습니다.
필요에 따라 선택적으로 접속하여 사용하면 되겠습니다.
위 방법들은 여러분들이 올려 놓아 비교적 손쉽게
설정가능한데 나의 경우 자동실행되는 부분의
주석인듯한부분들 #을 모두 제외하고 진행하여
또다시 삽질을 하였음.
아래 링크에 보면 나와 같은 사람들이 세계 각국에 존재하는 듯함.
https://www.raspberrypi.org/forums/viewtopic.php?t=7395
참조 https://wiki.debian.org/LSBInitScripts
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install tightvncserver
설치하는 중간에 disk를 얼마를 쓸텐데 계속할꺼냐고 묻는다.
당연히 y
설치가 끝나면
tightvncserver로 Raspberry pi로 접근할 password를 설정한다.
tightvncserver
이제 'X' desktop 화면 :1 의 password세팅를 세팅했습니다.
vncserver :1 -geometry 1024x768
부팅 시 자동 시작되도록 스크립트 작성. 이후 단계는 /etc/init.d 디렉토리 내에서 진행.
/etc/init.d 디렉토리로 이동 후
vncboot 라는 파일 작성(파일 이름은 마음대로)하고 아래 단계에 따라 진행
참고로 파일 내용 중
/usr/bin/vncserver :1 -geometry 1280x800 -depth 16
이 부분을 사용자 취향에 맞게 수정해주면 됨
더 높은 해상도 및 컬리를 원한다면
/usr/bin/vncserver :1 -geometry 1920x1080 -depth 24
이렇게 변경해줌
:1은 screen id를 지정해주는 부분임.
client 에서 접속 시 해당 screen id로 접속하게됨.
파일 내용은 아래와 같음.
사용자 id, home path 입력 부분에 client 접속 시 필요한 사용자의 정보를 입력.
#!/bin/sh
#/etc/init.d/vncboot
### BEGIN INIT INFO
# Provides: vncboot
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start VNC Server at boot time
# Description: Start VNC Server at boot time.
### END INIT INFO
USER=<사용자 ID 입력, ex:root>
HOME=<사용자 home 입력, ex: /root>
export USER HOME
case "$1" in
start)
echo "Starting VNC Server"
#Insert your favoured settings for a VNC session
su <사용자 id 입력, ex: root> -c '/usr/bin/vncserver :1 -geometry 1920x1080 -depth 24'
;;
stop)
echo "Stopping VNC Server"
/usr/bin/vncserver -kill :1
;;
*)
echo "Usage: /etc/init.d/vncboot {start|stop}"
exit 1
;;
esac
exit 0
파일 permission 변경
$ sudo chmod 755 vncboot
처음 실행 후 암호설정
$ sudo ./vncboot start위와 같이 실행시키면 암호설정을 하게됨.
client에서 접속 시 사용할 암호를 입력해줌.
부팅 시 자동실행 되도록 등록
$ sudo update-rc.d vncboot defaults
raspberry pi 재부팅
$ sudo shutdown -r now
client 프로그램 다운로드
이제 raspberryPi에서의 설정은 끝났다.
다시 윈도로 돌아와서
www.tightvnc.com 로 들어가서
TightVNC를 다운로드합니다.
64bit, 32bit중 입맛에 맞는 것을 선택해서 다운로드해서
Windows에 설치합니다.
vncview를 실행하고 ip와 화면 번호를 입력하면
RaspberryPi에서 설정한 password를 묻습니다.
입력하면
pi's X desktop TigerVNC화면이 열립니다.
putty화면과는 차이가 있습니다.
필요에 따라 선택적으로 접속하여 사용하면 되겠습니다.
위 방법들은 여러분들이 올려 놓아 비교적 손쉽게
설정가능한데 나의 경우 자동실행되는 부분의
주석인듯한부분들 #을 모두 제외하고 진행하여
또다시 삽질을 하였음.
아래 링크에 보면 나와 같은 사람들이 세계 각국에 존재하는 듯함.
https://www.raspberrypi.org/forums/viewtopic.php?t=7395
참조 https://wiki.debian.org/LSBInitScripts
2016년 2월 16일 화요일
Raspbian Jessie Lite wifi setting
Raspbian Jessie Lite에서 무선랜을 잡을 때 이런저런 삽질을 했는데
의외로 깔끔하게 연결됩니다.
yellow background is command
white background is default
gray background is insert command
sudo nano /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d
auto lo
iface lo inet loopback
iface eth0 inet manual
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
allow-hotplug wlan1
iface wlan1 inet manual
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="YourSSID"
psk="password"
key_mgmt=WPA-PSK
}
sudo reboot
의외로 깔끔하게 연결됩니다.
yellow background is command
white background is default
gray background is insert command
sudo nano /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d
auto lo
iface lo inet loopback
iface eth0 inet manual
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
allow-hotplug wlan1
iface wlan1 inet manual
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="YourSSID"
psk="password"
key_mgmt=WPA-PSK
}
sudo reboot
2016년 2월 12일 금요일
Raspbian Jessie Lite for RaspberryPi
Raspbian Jessie Lite 도 설치해 봅시다.
ubuntu를 설치해봤었지만, 공식지원은 rsapbian이라서 시도 해보는 것입니다.
위 이미지를 클릭하면
위와 같이 Raspbin Jessie, Wheezy, Jessie Lite 3종세트가 보입니다.
이중 Jessie Lite를 선택해서 이미지를 다운로드합니다.
이후 부터는 이전에 게시한 내용과 동일합니다.
그래서 copy and paste 합니다.
압축받은 파일을 7-zip(http://www.7-zip.org/)등을 이용하여 압축을 풀고....
Win32 Disk Image(Win32 Disk Imager)로 SDCard에 굽습니다.
(뒤집을 필요없습니다...썰렁)
구워진 SD Card를 라즈베리에 꽃고 전원을 넣으면 끝.
Win32 Disk Image(Win32 Disk Imager)로 SDCard에 굽습니다.
(뒤집을 필요없습니다...썰렁)
구워진 SD Card를 라즈베리에 꽃고 전원을 넣으면 끝.
2016년 2월 11일 목요일
snappy ubuntu core for Raspberry pi 2
라즈베리파이 다운로드로 들어갑니다. https://www.raspberrypi.org/downloads/
snappy ubuntu core를 클릭합니다.
(https://developer.ubuntu.com/en/snappy/start/#snappy-raspi2)
on the Raspberry Pi 2 를 클릭하면 Ubuntu, win, Mac에서 설치할수 있는 화면이 나온다.
나는 윈도이므로 다음 그림의 링크를 따라간다.
link를 클릭하여 이미지를 다운로드 합니다.
이후 부터는 ubuntu mate와 동일합니다.
그래서 copy and paste 합니다.
다운로드가 끝나면
압축받은 파일을 7-zip(http://www.7-zip.org/)등을 이용하여 압축을 풀고....
Win32 Disk Image(Win32 Disk Imager)로 SDCard에 굽습니다.
(뒤집을 필요없습니다...썰렁)
구워진 SD Card를 라즈베리에 꽃고 전원을 넣으면 끝.
출처 https://developer.ubuntu.com/en/snappy/start/raspberry-pi-2/#install-from-windows
Ubuntu MATE for the Raspberry Pi 2
라즈베리파이2에 라즈비안을 깔아지만....
느리다.
혹시 ubuntu를 설치하면 좀 나아질까 싶어 시도해 봅니다.
라즈베리파이로 이동
https://www.raspberrypi.org/
다운로드로 이동
https://www.raspberrypi.org/downloads/
NOOBS, Raspbian 외에
ubuntu가 Third Party Operating System Images로 있습니다.
먼저 ubuntu mate를 설치해보고 snappy ubuntu code도 설치해볼 예정입니다.
ubuntu mate 아이콘(https://ubuntu-mate.org/raspberry-pi/)을 클릭해서 이동하면
Ubuntu MATE 15.10.1을 다운로드할수 있는 경로가 나타납니다.
마음에드는 경로를 선택하고 저장폴드를 선택하여 다운로드합니다.
기부도 할 수 있습니다.(2.5$,5$,10$,20$), 선택사항입니다.
다운로드가 끝나면
압축받은 파일을 7-zip(http://www.7-zip.org/)등을 이용하여 압축을 풀고....
Win32 Disk Image(Win32 Disk Imager)로 SDCard에 굽습니다.
(뒤집을 필요없습니다...썰렁)
구워진 SD Card를 라즈베리에 꽃고 전원을 넣으면 끝.
(ubuntu도 좀 느림니다....ㅠㅠ)
(gui를 포기해야 될가요?....)
출처 https://ubuntu-mate.org/raspberry-pi/
느리다.
혹시 ubuntu를 설치하면 좀 나아질까 싶어 시도해 봅니다.
라즈베리파이로 이동
https://www.raspberrypi.org/
다운로드로 이동
https://www.raspberrypi.org/downloads/
NOOBS, Raspbian 외에
ubuntu가 Third Party Operating System Images로 있습니다.
먼저 ubuntu mate를 설치해보고 snappy ubuntu code도 설치해볼 예정입니다.
ubuntu mate 아이콘(https://ubuntu-mate.org/raspberry-pi/)을 클릭해서 이동하면
Ubuntu MATE 15.10.1을 다운로드할수 있는 경로가 나타납니다.
마음에드는 경로를 선택하고 저장폴드를 선택하여 다운로드합니다.
기부도 할 수 있습니다.(2.5$,5$,10$,20$), 선택사항입니다.
다운로드가 끝나면
압축받은 파일을 7-zip(http://www.7-zip.org/)등을 이용하여 압축을 풀고....
Win32 Disk Image(Win32 Disk Imager)로 SDCard에 굽습니다.
(뒤집을 필요없습니다...썰렁)
구워진 SD Card를 라즈베리에 꽃고 전원을 넣으면 끝.
(ubuntu도 좀 느림니다....ㅠㅠ)
(gui를 포기해야 될가요?....)
출처 https://ubuntu-mate.org/raspberry-pi/
2016년 1월 28일 목요일
소장수 신씨와 뱃사공 황씨
신경림
영흥도에서 만난 소장수 신씨는
눈을 감고도 소를 몰고 백리를 간다
영흥도에서 만난 소장수 신씨는
눈을 감고도 소를 몰고 백리를 간다
어디서 길이 굽고 어디에 도랑이 있는가
또 어디쯤 돌부리가 있는가
눈을 감고도 그는 다 안다
또 어디쯤 돌부리가 있는가
눈을 감고도 그는 다 안다
하지만 그는 잠시도 한눈을 안 판다
서른 해 걷던 길도 늘 첫길로 조심하고
서른 해 걷던 길도 늘 첫길로 조심하고
천 번 뛰어넘던 도랑도
늘 첫번처럼 힘을다해 뛰어넘는다
남한강 청풍에 사는 뱃사공 황씨는
강길이 바로 그의 뜨락이자 텃밭이다
늘 첫번처럼 힘을다해 뛰어넘는다
남한강 청풍에 사는 뱃사공 황씨는
강길이 바로 그의 뜨락이자 텃밭이다
살여울 어디쯤 물살이 더 세고
어디쯤에 풀등이 있는가도 다 안다
어디쯤에 풀등이 있는가도 다 안다
물풀 하나하나 강돌 하나하나
바위서덜 그 하나하나 손금 보듯 다 알지만
노만 잡으면 그는 늘 긴장한다
바위서덜 그 하나하나 손금 보듯 다 알지만
노만 잡으면 그는 늘 긴장한다
장가가던 첫날밤처럼 긴장한다
쉰 해 물길이 그에게는 하루처럼 새롭다
잠이 오지 않는 밤 나는 서글퍼진다
창문을 때리는 빗소리를 들으면 서글퍼진다
쉰 해 물길이 그에게는 하루처럼 새롭다
잠이 오지 않는 밤 나는 서글퍼진다
창문을 때리는 빗소리를 들으면 서글퍼진다
이 길 걸은 지 서른 해에
단 하나 익은 골이 내게 없음이
단 하나 익은 골이 내게 없음이
눈 감고도 갈 수 있는 단 한 길이 내게 없음이
그러면서도 때로 턱없이 건방져지는 어리석음이
그러면서도 때로 턱없이 건방져지는 어리석음이
때로 분수없이 설치게 되는 뻔뻔스러움이
소장수 신씨와 뱃사공 황씨를 생각하며 서글퍼진다
소장수 신씨와 뱃사공 황씨를 생각하며 서글퍼진다
2016년 1월 25일 월요일
ftp로 원격서버의 데이터 자동백업
ftp로 원격서버의 데이터 자동백업
서버2에서 서버1의 데이터를 FTP로 가져와 백업하기
작업내용 : 서버2에서 매일(/etc/cron.daily/autoftp) 서버1로 ftp접속을 하여(/home/sspark/.autoftp.sh, /home/sspark/.ftpscript) 백업할 데이터들을 가져온후에 서버2에 날짜형식을 가진 디렉토리를 생성하여 저장하고, 서버1의 원본데이터는 삭제한다.
서버1에서는 매일매일 백업일 하기위해 /etc/cron.daily/NICE-daily-backup에서 /sbin/NICEBACKUP파일을 실행시켜 이 파일에 있는 내용대로 매일매일 백업이 되고 있다.
서버1에서 매일 백업되는 내용
다음과 같이 서버1의 /sbin/NICEBACKUP에는 백업해야할 내용에관한 명령어들이 들어있다.
[root@kebia_1 /root]# cat /sbin/NICEBACKUP
#!/bin/bash
#APACHE Server BACKUP
tar cvfpz /home/sspark/BACKUP/usr_local_apache.tar.gz /usr/local/apache
#Mysql DB Full BACKUP
tar cvfpz /home/sspark/BACKUP/usr_local_mysql.tar.gz /usr/local/mysql
#Filesystem BACKUP
tar cvfpz /home/sspark/BACKUP/etc.tar.gz /etc
tar cvfpz /home/sspark/BACKUP/var.tar.gz /var
tar cvfpz /home/sspark/BACKUP/home.tar.gz /home
#Mysql file BACKUP
/usr/local/mysql/bin/mysqldump -uroot -p11111 mysql > /home/sspark/BACKUP/mysql.sql
/usr/local/mysql/bin/mysqldump -uroot -p11111 kebia > /home/sspark/BACKUP/kebia.sql
chown -R sspark:sspark /home/sspark/BACKUP
#!/bin/bash
#APACHE Server BACKUP
tar cvfpz /home/sspark/BACKUP/usr_local_apache.tar.gz /usr/local/apache
#Mysql DB Full BACKUP
tar cvfpz /home/sspark/BACKUP/usr_local_mysql.tar.gz /usr/local/mysql
#Filesystem BACKUP
tar cvfpz /home/sspark/BACKUP/etc.tar.gz /etc
tar cvfpz /home/sspark/BACKUP/var.tar.gz /var
tar cvfpz /home/sspark/BACKUP/home.tar.gz /home
#Mysql file BACKUP
/usr/local/mysql/bin/mysqldump -uroot -p11111 mysql > /home/sspark/BACKUP/mysql.sql
/usr/local/mysql/bin/mysqldump -uroot -p11111 kebia > /home/sspark/BACKUP/kebia.sql
chown -R sspark:sspark /home/sspark/BACKUP
아래와 같이 서버1에는 위의 백업을 매일 하기위해 /etc/cron.dailly에 NICE-daily-backup이란 파일이 존재한다.
[root@kebia_1 /root]# cat /etc/cron.daily/NICE-daily-backup
echo "NICE KOREA BACKUP"
echo `date`
/sbin/NICEBACKUP
echo "BACKUP is completed"
[root@kebia_1 /root]#
echo "NICE KOREA BACKUP"
echo `date`
/sbin/NICEBACKUP
echo "BACKUP is completed"
[root@kebia_1 /root]#
서버1에는 매일 아래 디렉토리에 다음과 같이 백업이 되고 있다.
[root@kebia_1 BACKUP]# pwd
/home/sspark/BACKUP
[root@kebia_1 BACKUP]# ll
-rw-r--r-- 1 sspark sspark 1514583 Apr 1 04:04 115.co.kr.tar.gz
-rw-r--r-- 1 sspark sspark 9263 Apr 1 04:05 chapter.co.kr.tar.gz
-rw-r--r-- 1 sspark sspark 12996153 Apr 1 04:05 e-gain.co.kr.tar.gz
-rw-r--r-- 1 sspark sspark 556780 Apr 1 04:04 etc.tar.gz
-rw-r--r-- 1 sspark sspark 2007684 Apr 1 04:04 imt-2000.co.kr.tar.gz
-rw-r--r-- 1 sspark sspark 11236021 Apr 1 04:04 nicekorea.co.kr.tar.gz
-rw-r--r-- 1 sspark sspark 32128 Apr 1 04:04 owner.co.kr.tar.gz
-rw-r--r-- 1 sspark sspark 2150591 Apr 1 04:04 picasso.co.kr.tar.gz
-rw-r--r-- 1 sspark sspark 3624831 Apr 1 04:04 sajik.com.tar.gz
-rw-r--r-- 1 sspark sspark 94379928 Apr 1 04:04 usr_local.tar.gz
-rw-r--r-- 1 sspark sspark 4471105 Apr 1 04:04 var.tar.gz
[root@kebia_1 BACKUP]#
/home/sspark/BACKUP
[root@kebia_1 BACKUP]# ll
-rw-r--r-- 1 sspark sspark 1514583 Apr 1 04:04 115.co.kr.tar.gz
-rw-r--r-- 1 sspark sspark 9263 Apr 1 04:05 chapter.co.kr.tar.gz
-rw-r--r-- 1 sspark sspark 12996153 Apr 1 04:05 e-gain.co.kr.tar.gz
-rw-r--r-- 1 sspark sspark 556780 Apr 1 04:04 etc.tar.gz
-rw-r--r-- 1 sspark sspark 2007684 Apr 1 04:04 imt-2000.co.kr.tar.gz
-rw-r--r-- 1 sspark sspark 11236021 Apr 1 04:04 nicekorea.co.kr.tar.gz
-rw-r--r-- 1 sspark sspark 32128 Apr 1 04:04 owner.co.kr.tar.gz
-rw-r--r-- 1 sspark sspark 2150591 Apr 1 04:04 picasso.co.kr.tar.gz
-rw-r--r-- 1 sspark sspark 3624831 Apr 1 04:04 sajik.com.tar.gz
-rw-r--r-- 1 sspark sspark 94379928 Apr 1 04:04 usr_local.tar.gz
-rw-r--r-- 1 sspark sspark 4471105 Apr 1 04:04 var.tar.gz
[root@kebia_1 BACKUP]#
서버2에는 서버1의 데이터를 매일 가져오기위해 /etc/cron.daily에서 매일실행하는 스크립트 autoftp가 아래와 같이 있다.
[root@kebia_2 /root]#
[root@kebia_2 /root]# cat /etc/cron.daily/autoftp
#!/bin/bash
/home/sspark/.autoftp.sh
[root@kebia_2 /root]#
[root@kebia_2 /root]# cat /etc/cron.daily/autoftp
#!/bin/bash
/home/sspark/.autoftp.sh
[root@kebia_2 /root]#
서버2에 만들어져야할 파일2개
autoftp.sh : ftp실행파일
ftpscript : ftp명령어들
[root@kebia_2 sspark]# cat autoftp.sh
#!/bin/bash
ftp -n 211.220.193.181 < ./ftpscript
export backupdir=`date '+%y-%m-%d.%H-%M'`
mkdir /home/sspark/BACKUP/$backupdir
mv /home/sspark/tmp/* /home/sspark/BACKUP/$backupdir
[root@kebia_2 sspark]#
#!/bin/bash
ftp -n 211.220.193.181 < ./ftpscript
export backupdir=`date '+%y-%m-%d.%H-%M'`
mkdir /home/sspark/BACKUP/$backupdir
mv /home/sspark/tmp/* /home/sspark/BACKUP/$backupdir
[root@kebia_2 sspark]#
[root@kebia_2 sspark]# cat ftpscript
user sspark 11111
cd /home/sspark/BACKUP
lcd /home/sspark/tmp
bin
prompt
mget *.tar.gz
mdelete *.tar.gz
bye
[root@kebia_2 sspark]#
user sspark 11111
cd /home/sspark/BACKUP
lcd /home/sspark/tmp
bin
prompt
mget *.tar.gz
mdelete *.tar.gz
bye
[root@kebia_2 sspark]#
서버1에는 cron.daily에 /sbin/NICEBACKUP등으로 매일 또는 매주 또는 매월백업을 자동으로 되고 있어야한다.
서버1의 /home/sspark/BACKUP/200104010303 형식으로 디렉토리를 생성하게되어 저장된다.
그런후에는 서버1의 데이터를 삭제한다.
서버1의 /home/sspark/BACKUP/200104010303 형식으로 디렉토리를 생성하게되어 저장된다.
그런후에는 서버1의 데이터를 삭제한다.
작업완료후에 서버2에는 서버1의 내용이 백업되어 있다.
[root@kebia_2 01-04-01.05-45]# pwd
/home/sspark/BACKUP/01-04-01.05-45
[root@kebia_2 01-04-01.05-45]# ll
-rw-r--r-- 1 root root 1514583 Apr 1 05:36 115.co.kr.tar.gz
-rw-r--r-- 1 root root 9263 Apr 1 05:36 chapter.co.kr.tar.gz
-rw-r--r-- 1 root root 12996153 Apr 1 05:37 e-gain.co.kr.tar.gz
-rw-r--r-- 1 root root 556780 Apr 1 05:37 etc.tar.gz
-rw-r--r-- 1 root root 2007684 Apr 1 05:37 imt-2000.co.kr.tar.gz
-rw-r--r-- 1 root root 11236021 Apr 1 05:38 nicekorea.co.kr.tar.gz
-rw-r--r-- 1 root root 32128 Apr 1 05:38 owner.co.kr.tar.gz
-rw-r--r-- 1 root root 2150591 Apr 1 05:38 picasso.co.kr.tar.gz
-rw-r--r-- 1 root root 3624831 Apr 1 05:38 sajik.com.tar.gz
-rw-r--r-- 1 root root 94379928 Apr 1 05:45 usr_local.tar.gz
-rw-r--r-- 1 root root 4471105 Apr 1 05:45 var.tar.gz
[root@kebia_2 01-04-01.05-45]#
/home/sspark/BACKUP/01-04-01.05-45
[root@kebia_2 01-04-01.05-45]# ll
-rw-r--r-- 1 root root 1514583 Apr 1 05:36 115.co.kr.tar.gz
-rw-r--r-- 1 root root 9263 Apr 1 05:36 chapter.co.kr.tar.gz
-rw-r--r-- 1 root root 12996153 Apr 1 05:37 e-gain.co.kr.tar.gz
-rw-r--r-- 1 root root 556780 Apr 1 05:37 etc.tar.gz
-rw-r--r-- 1 root root 2007684 Apr 1 05:37 imt-2000.co.kr.tar.gz
-rw-r--r-- 1 root root 11236021 Apr 1 05:38 nicekorea.co.kr.tar.gz
-rw-r--r-- 1 root root 32128 Apr 1 05:38 owner.co.kr.tar.gz
-rw-r--r-- 1 root root 2150591 Apr 1 05:38 picasso.co.kr.tar.gz
-rw-r--r-- 1 root root 3624831 Apr 1 05:38 sajik.com.tar.gz
-rw-r--r-- 1 root root 94379928 Apr 1 05:45 usr_local.tar.gz
-rw-r--r-- 1 root root 4471105 Apr 1 05:45 var.tar.gz
[root@kebia_2 01-04-01.05-45]#
서버2에서 ftp접속 및 작업이 끝난후 서버1의 내용(즉, 원본파일은 지워지게 된다.)
[root@kebia_1 BACKUP]# pwd
/home/sspark/BACKUP
[root@kebia_1 BACKUP]# ll
[root@kebia_1 BACKUP]#
/home/sspark/BACKUP
[root@kebia_1 BACKUP]# ll
[root@kebia_1 BACKUP]#
피드 구독하기:
글 (Atom)
vsftpd FTP 서버 접속은 성공하였으나, "디렉토리 목록 조회 실패" 현상 발생시
FTP Passive 모드를 활성화 필요. 1. vsftpd 설정 변경 /etc/vsftpd/vsftpd.conf 상에 아래 내용 추가 기입 #passive modpasv_enable=YES pasv_min_port=5001 pasv...
-
from PIL import Image, ImageTk E : Unable to locate package python3 - pil E : Unable to locate package python3 - imaging - tk $sudo ...
-
FTP Passive 모드를 활성화 필요. 1. vsftpd 설정 변경 /etc/vsftpd/vsftpd.conf 상에 아래 내용 추가 기입 #passive modpasv_enable=YES pasv_min_port=5001 pasv...


