歡迎您光臨本站 註冊首頁

在Linux下遠程使用scp拷貝文件

←手機掃碼閱讀     火星人 @ 2014-03-29 , reply:0

用"scp"拷貝文件

SSH提供了一些明令和shell用來登錄遠程伺服器。在默認情況下它不允許你拷貝文件,但是還是提供了一個"scp"命令。

假定你想把本地計算機當前目錄下的一個名為"dumb"的文件拷貝到遠程伺服器www.foobar.com上你的家目錄下。而且你在遠程伺服器上的帳號名為"bilbo"。可以用這個命令:

scp dumb bilbo@www.foobar.com:.

把文件拷貝回來用這個命令:

scp bilbo@www.foobar.com:dumb .

"scp"調用SSH進行登錄,然後拷貝文件,最後調用SSH關閉這個連接。

如果在你的"~/.ssh/config"文件中已經為www.foobar.com做了這樣的配置:

Host *fbc
HostName www.foobar.com
User bilbo
ForwardAgent yes

那麼你就可以用"fbc"來代替"bilbo@www.foobar.com",命令就簡化為"scp dumb fbc:."。

"scp"假定你在遠程主機上的家目錄為你的工作目錄。如果你使用相對目錄就要相對於家目錄。

用"scp"命令的"-r"參數允許遞歸地拷貝目錄。"scp"也可以在兩個不同的遠程主機之間拷貝文件。

關於SSH的詳細信息,可以參考http://www.linuxaid.com.cn/engineer/brimmer/html/ssh.htm

scp user@host:/path/to/files local_file_name

拷貝到遠程

scp local_file_name user@host:/path/to/files

ftp:

wget ftp://ftp.isc.org/isc/bind9/9.2.2/bind-9.2.2.tar.gz

http://blog.chinaunix.net/u/8983/showart.php?id=55609

http://www.unix206.com/8/166189.html

scp命令

scp命令是SSH中最方便有用的命令了,試想,在兩台伺服器之間直接 傳送文件,僅僅用scp一個命令就完全解決了。 你可以在一台伺服器上 以root身份運行#scp servername:/home/ftp/pub/file1 . 這樣就把另 一台伺服器上的文件/home/ftp/pub/file1直接傳到本機器的當前目錄下,當然你也可以用#scp /tmp/file2 servername:/boot 把本機上的文件/tmp/file2送到另一台機器的/boot目錄下。而且整個傳送過程仍然是 用SSH加密的。



openssh 妙用之遠程執行命令---自動下載apache日誌文件


應用,一切都是應用!

本文介紹了2個點:一個是利用ssh直接登陸別的機器(不需要密碼了),另外一個就是配置apache每隔一段時間自動切換日誌文件。這一切通過一個autosftp.sh.v2的腳本這個實例來介紹。


openssh 妙用之遠程執行命令---自動下載apache日誌文件

一. 前期準備

目標: 需要把多台機器上的apache日誌自動下載到本地進行分析

背景:
1. web主機共有3台,分別為web1 web2 web3 均為solaris系統
2. 本地機器traffic為linux 7.3
3. 整個過程需要自動執行不需要人工干預
4. 考慮採用安全的ssh協議來傳輸日誌文件

思路:
1. 配置traffic和web主機之間ssh工具可以直接登陸
2. 配置web主機上的apache每天自動切換日誌,不再往前一天日誌寫入。
3. traffic上執行腳本自動壓縮web主機上的日誌文件,然後下載到本地
4. traffic執行本地命令解壓縮下載下來的日誌文件

二. 實施過程

1. 配置traffic和web主機之間ssh工具可以直接登陸

1.1 編輯traffic的hosts文件增加web主機條目

......
203.81.*.* web1
203.81.*.* web2
203.81.*.* web3
1.2 生成ssh客戶密匙

#ssh-keygen -t rsa

屏幕顯示(為生成公匙密匙文件和等,全部回車即可)
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
d1:69:34:80:56:2a:2d:df:70:2d:10:ac:63:5e:1e:1c root@web

1.3 生成后,將本地的id_rsa.pub複製到遠程的./ssh目錄下,更改名稱為authorized_keys2

sftp root@web1
sftp web1
Connecting to web1
root@web1's password: (輸入密碼)
sftp>
sftp>cd .ssh
sftp>put id_rsa.pub authorized_keys2
Uploading id_rsa.pub to /.ssh/authorized_keys2

1.4 測試是否成功

scp web1:/usr/local/apache2/logs/hoho /root/ 複製遠程的hoho文件到本地的/root/.ssh目錄下,無需輸入密碼
hoho 100% 40KB 40.2KB/s 00:00 (屏顯狀態值,顯示已傳輸完畢,文件可正常使用)
1.5 補遺或者註解

a. 第一次登陸web1,ssh會提示將web1加入自己know_hosts裡面。
b. 直接登陸驗證是區別用戶的,authorized_keys2文件是分用戶的。

2. 配置web主機的每天自動切換日誌文件

在配置文件中加入下面兩句,如果有虛擬主機就加到虛擬主機的配置裡面

CustomLog "|/usr/local/apache2/bin/rotatelogs /usr/local/apache2/logs/mytestsite-access_log.%Y%m%d 86400" combined

TransferLog "|/usr/local/apache2/bin/rotatelogs /usr/local/apache2/logs/mytestsite-access_log.%Y%m%d 86400

3. traffic上自動執行的腳本

#!/bin/bash
# This script is for auto download the log life of apache
# editor anwei,green
# version 2.0
# add 2 parameters GateWay & LogFile
# add more information for debug
# add The starting time & the ending of time

# step 1 : parameters setting ,add default gateway
Dest_dir=/data/logs
Sour_dir=/usr/local/apache2/logs
LogFile=mytestsite-access_log
Host_table="web1 web2 web3"
Date=`date +%Y%m%d -d '-1 day'`
GateWay=192.168.1.1
echo Beginning:`date +'%Y/%m/%d %H:%M'`
/sbin/route add default gw $GateWay
# step 2 : compress log file

for loop in $Host_table

do

ssh $loop "/usr/bin/gzip $Sour_dir/$LogFile.$Date " && echo $loop : compress apache log file complete.

done

# step 3 : download form web server

for loop in $Host_table

do

scp $loop:$Sour_dir/$LogFile.$Date.gz $Dest_dir/$loop && echo $loop : download apache log file complete.

done

# step 4 : uncompress log files

for loop in $Host_table

do

/bin/gzip -df $Dest_dir/$loop/$LogFile.$Date.gz
/bin/cat $Dest_dir/$loop/$LogFile.$Date > $Dest_dir/$loop/$LogFile && echo $loop : log files Ready now.

done

/sbin/route delete default gw $GateWay
echo End:`date +'%Y/%m/%d %H:%M'`

4. traffic上面部署cron任務自動執行

15 8 * * * /tools/autosftp.sh.v2 >> /tools/sftp.log 2>&1


5. 每天可以通過檢查sftp.log的內容查看腳本的執行情況

實際運行一周以來,全部順利執行結束,下面是sftp.log的片斷

Beginning:2005/11/06 08:15
web1 : compress apache log file complete.
web2 : compress apache log file complete.
web3 : compress apache log file complete.
web1 : download apache log file complete.
web2 : download apache log file complete.
web3 : download apache log file complete.
web1 : log files Ready now.
web2 : log files Ready now.
web3 : log files Ready now.
End:2005/11/06 08:46

[火星人 ] 在Linux下遠程使用scp拷貝文件已經有587次圍觀

http://coctec.com/docs/linux/show-post-204281.html