Linux下幾種文件傳輸命令 sz rz sftp scp介紹
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于成都網(wǎng)站制作、成都網(wǎng)站建設、德興網(wǎng)絡推廣、小程序制作、德興網(wǎng)絡營銷、德興企業(yè)策劃、德興品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學生創(chuàng)業(yè)者提供德興建站搭建服務,24小時服務熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
1.sftp
Secure Ftp
是一個基于SSH安全協(xié)議的文件傳輸管理工具。由于它是基于SSH的,會在傳輸過程中對用戶的密碼、數(shù)據(jù)等敏感信息進行加密,因此可以有效的防止用戶信息
在傳輸?shù)倪^程中被竊取,比FTP有更高的安全性。在功能方面與FTP很類似,不僅可以傳輸文件數(shù)據(jù),而且可以進行遠程的文件管理(如建立,刪除,查看文件
列表等操作)。Sftp與ftp雖然只有一字之差,但基于的傳輸協(xié)議卻是不同的。因此不能用sftp client去連接ftp server 也不能用
ftp client 去連接 sftp server。
建立連接:sftp user@host
從本地上傳文件:put localpath
下載文件:get remotepath
與遠程相對應的本地操作,只需要在命令前加上”l” 即可,方便好記。
例如:lcd lpwd lmkdir
2.scp
SCP :secure copy (remote file copy program) 也是一個基于SSH安全協(xié)議的文件傳輸命令。與sftp不同的是,它只提供主機間的文件傳輸功能,沒有文件管理的功能。
復制local_file 到遠程目錄remote_folder下
scp local_file remote_user@host:remote_folder
復制local_folder 到遠程remote_folder(需要加參數(shù) -r 遞歸)
scp –r local_folder remote_user@host:remote_folder
以上命令反過來寫就是遠程復制到本地
3.sz/rz
sz/rz 是基于ZModem傳輸協(xié)議的命令。對傳輸?shù)臄?shù)據(jù)會進行核查,并且有很好的傳輸性能。使用起來更是非常方便,但前提是window端需要有能夠支持ZModem的telnet或者SSH客戶端,例如secureCRT。
首先需要在secureCRT中可以配置相關的本地下載和上傳目錄,然后用rz、sz命令即可方便的傳輸文件數(shù)據(jù)。
下載數(shù)據(jù)到本地下載目錄:sz filename1 filename2 …
上傳數(shù)據(jù)到遠程:執(zhí)行rz –be 命令,客戶端會彈出上傳窗口,用戶自行選擇(可多選)要上傳的文件即可。
本移植主要參考友善之臂移植手冊完成,做個筆記以備不時之需
Linux-2.6.32 內(nèi)核LCD驅(qū)動移植
使用環(huán)境:fedora9
交叉編譯工具鏈:arm-linux-gcc-4.4.3
內(nèi)核源碼來源:
內(nèi)核存放目錄:/opt/mymini2440/linux-2.6.32
一、LCD背光驅(qū)動移植
在、opt/mymini2440/linux-2.6.32/drivers/video/目錄下添加背光驅(qū)動程序mini2440_backlight.c,內(nèi)容如下:
//以下頭文件可能并不是每一個都必須的,但多余的并不會影響驅(qū)動程序的內(nèi)容
#include linux/errno.h
#include linux/kernel.h
#include linux/module.h
#include linux/slab.h
#include linux/input.h
#include linux/init.h
#include linux/serio.h
#include linux/delay.h
#include linux/clk.h
#include linux/miscdevice.h
#include linux/gpio.h
#include asm/io.h
#include asm/irq.h
#include asm/uaccess.h
#include mach/regs-clock.h
#include plat/regs-timer.h
#include mach/regs-gpio.h
#include linux/cdev.h
#undef DEBUG
//#define DEBUG
#ifdef DEBUG
#define DPRINTK(x...) {printk(__FUNCTION__"(%d): ",__LINE__);printk(##x);}
#else
#define DPRINTK(x...) (void)(0)
#endif
//定義背光驅(qū)動的名稱為backligh,將會出現(xiàn)在/dev/backlight
#define DEVICE_NAME "backlight"
//定義背光變量bl_state,以記錄背光的開關狀態(tài)
static unsigned int bl_state;
//設置背光開關的函數(shù),主要是翻轉(zhuǎn)背光變量bl_state
static inline void set_bl(int state)
{
bl_state = !!state; //翻轉(zhuǎn)bl_state 變量
s3c2410_gpio_setpin(S3C2410_GPG(4), bl_state); //把結(jié)果寫入背光所用的寄存器GPG4
}
//獲取背光狀態(tài)
static inline unsigned int get_bl(void)
{
return bl_state;
}
//從應用程序讀取參數(shù),并傳遞到內(nèi)核中
static ssize_t dev_write(struct file *file, const char *buffer, size_t count, loff_t * ppos)
{
unsigned char ch;
int ret;
if (count == 0) {
return count;
}
//使用copy_from_user 函數(shù)從用戶層/應用層讀取參數(shù)
ret = copy_from_user(ch, buffer, sizeof ch) ? -EFAULT : 0;
if (ret) {
return ret;
}
ch = 0x01; //判斷奇數(shù)還是偶數(shù)
set_bl(ch); //設置背光狀態(tài)
return count;
}
//把內(nèi)核參數(shù)傳遞給用戶層/應用層的讀函數(shù)
static ssize_t dev_read(struct file *filp, char *buffer, size_t count, loff_t *ppos)
{
int ret;
unsigned char str[] = {'0', '1' };
if (count == 0) {
return 0;
}
//使用copy_to_user 函數(shù)把內(nèi)核參數(shù)傳遞到用戶層/應用層
ret = copy_to_user(buffer, str + get_bl(), sizeof(unsigned char) ) ? -EFAULT : 0;
if (ret) {
return ret;
}
return sizeof(unsigned char);
}
//設備操作集
static struct file_operations dev_fops = {
owner: THIS_MODULE,
read:dev_read,
write: dev_write,
};
static struct miscdevice misc = {
.minor = MISC_DYNAMIC_MINOR,
.name = DEVICE_NAME,
.fops = dev_fops,
};
//設備初始化,內(nèi)核啟動時就有效
static int __init dev_init(void)
{
int ret;
ret = misc_register(misc);
printk (DEVICE_NAME"\tinitialized\n");
//初始化背光所用的端口GPG4 為輸出
s3c2410_gpio_cfgpin(S3C2410_GPG(4), S3C2410_GPIO_OUTPUT);
//啟動內(nèi)核時打開背光
set_bl(1);
return ret;
}
static void __exit dev_exit(void)
{
misc_deregister(misc);
}
module_init(dev_init); //注冊背光驅(qū)動模塊
module_exit(dev_exit); //卸載背光驅(qū)動模塊
MODULE_LICENSE("GPL");
MODULE_AUTHOR("FriendlyARM Inc.");
在/opt/mymini2440/linux-2.6.32/drivers/video/目錄項的菜單文件Kconfig中添加LCD背光驅(qū)動配置菜單如下:
config FB_S3C2410_DEBUG
bool "S3C2410 lcd debug messages"
depends on FB_S3C2410
help
Turn on debugging messages. Note that you can set/unset at run time
through sysfs
config BACKLIGHT_MINI2440
tristate "Backlight support for mini2440 from FriendlyARM"
depends on MACH_MINI2440 FB_S3C2410
help
backlight driver for MINI2440 from FriendlyARM
config FB_SM501
tristate "Silicon Motion SM501 framebuffer support"
在/opt/mymini2440/linux-2.6.32/drivers/video/Makefile中添加背光驅(qū)動目標文件
# the test framebuffer is last
obj-$(CONFIG_FB_VIRTUAL) += vfb.o
#video output switch sysfs driver
obj-$(CONFIG_VIDEO_OUTPUT_CONTROL) += output.o
obj-$(CONFIG_BACKLIGHT_MINI2440) += mini2440_backlight.o
配置內(nèi)核:
Device Drivers --- Graphics support --- * Support for frame buffer devices
--- * Backlight support for mini2440 from FriendlyARM
背光驅(qū)動移植完畢!
二、LCD驅(qū)動移植
在內(nèi)核中添加各種LCD 類型的支持(我是X35的屏,也是我只需關注的部分,不過還是都添加了,X35有紅色標出)
刪除mach-mini2440.c原有代碼(本人115行-158行)
162
163 //LCD2VGA(分辨率為1024x768)模塊的配置和參數(shù)設置
164 #elif defined(CONFIG_FB_S3C2410_VGA1024768)
165 #define LCD_WIDTH 1024
166 #define LCD_HEIGHT 768
167 #define LCD_PIXCLOCK 80000
168 #define LCD_RIGHT_MARGIN 15
169 #define LCD_LEFT_MARGIN 199
170 #define LCD_HSYNC_LEN 15
171 #define LCD_UPPER_MARGIN 1
172 #define LCD_LOWER_MARGIN 1
173 #define LCD_VSYNC_LEN 1
174 #define LCD_CON5 (S3C2410_LCDCON5_FRM565 | S3C2410_LCDCON5_HWSWP)
175
176 #elif defined(CONFIG_FB_S3C2410_X240320)
177 #define LCD_WIDTH 240
178 #define LCD_HEIGHT 320
179 #define LCD_PIXCLOCK 170000
180 #define LCD_RIGHT_MARGIN 25
181 #define LCD_LEFT_MARGIN 0
182 #define LCD_HSYNC_LEN 4
183 #define LCD_UPPER_MARGIN 0
184 #define LCD_LOWER_MARGIN 4
185 #define LCD_VSYNC_LEN 9
186 #define LCD_CON5 (S3C2410_LCDCON5_FRM565 | S3C2410_LCDCON5_INVVDEN | S3C2410_LCDCON5_INVVFRAME | S3C2410_LCDCON5_INVVLINE | S3C2410_LCDCON5_INVVCLK | S3C2410_LCDCON5_HWSWP )
187 #endif
188
189 #if defined (LCD_WIDTH)
190
191 static struct s3c2410fb_display mini2440_lcd_cfg __initdata = {
192 #if !defined (LCD_CON5)
193 .lcdcon5 = S3C2410_LCDCON5_FRM565 |
194 S3C2410_LCDCON5_INVVLINE |
195 S3C2410_LCDCON5_INVVFRAME |
196 S3C2410_LCDCON5_PWREN |
197 S3C2410_LCDCON5_HWSWP,
198 #else
199 .lcdcon5 = LCD_CON5,
200 #endif
201 .type = S3C2410_LCDCON1_TFT,
202 .width = LCD_WIDTH,
203 .height = LCD_HEIGHT,
204 .pixclock = LCD_PIXCLOCK,
205 .xres = LCD_WIDTH,
206 .yres = LCD_HEIGHT,
207 .bpp = 16,
208 .left_margin = LCD_LEFT_MARGIN + 1,
209 .right_margin = LCD_RIGHT_MARGIN + 1,
210 .hsync_len = LCD_HSYNC_LEN + 1,
211 .upper_margin = LCD_UPPER_MARGIN + 1,
212 .lower_margin = LCD_LOWER_MARGIN + 1,
213 .vsync_len = LCD_VSYNC_LEN + 1,
214 };
215
216 static struct s3c2410fb_mach_info mini2440_fb_info __initdata = {
217 .displays = mini2440_lcd_cfg,
218 .num_displays = 1,
219 .default_display = 0,
220 .gpccon = 0xaa955699,
221 .gpccon_mask = 0xffc003cc,
222 .gpcup = 0x0000ffff,
223 .gpcup_mask = 0xffffffff,
224 .gpdcon = 0xaa95aaa1,
225 .gpdcon_mask = 0xffc0fff0,
226 .gpdup = 0x0000faff,
227 .gpdup_mask = 0xffffffff,
228 .lpcsel = 0xf82,
229 };
230
231 #endif
232
然后打開drivers/video/Kconfig,在大概1935 行加入以下配置信息:
1923 config FB_S3C2410_DEBUG
1924 bool "S3C2410 lcd debug messages"
1925 depends on FB_S3C2410
1926 help
1927 Turn on debugging messages. Note that you can set/unset at run time
1928 through sysfs
1929
1930 choice
1931 prompt "LCD select"
1932 depends on FB_S3C2410
1933 help
1934 S3C24x0 LCD size select
1935
1936 config FB_S3C2410_T240320
1937 boolean "3.5 inch 240X320 Toppoly LCD"
1938 depends on FB_S3C2410
1939 help
1940 3.5 inch 240X320 Toppoly LCD
1941
1942 config FB_S3C2410_N240320
1943 boolean "3.5 inch 240X320 NEC LCD"
1944 depends on FB_S3C2410
1945 help
1946 3.5 inch 240x320 NEC LCD
1947
1948 config FB_S3C2410_TFT640480
1949 boolean "8 inch 640X480 L80 LCD"
1950 depends on FB_S3C2410
1951 help
1952 8 inch 640X480 LCD
1953
1954 config FB_S3C2410_TFT800480
1955 boolean "7 inch 800x480 TFT LCD"
1956 depends on FB_S3C2410
1957 help
1958 7 inch 800x480 TFT LCD
1959
1960 config FB_S3C2410_VGA1024768
1961 boolean "VGA 1024x768"
1962 depends on FB_S3C2410
1963 help
1964 VGA 1024x768
1965
1966 config FB_S3C2410_X240320
1967 boolean "3.5 inch 240X320 LCD(ACX502BMU)"
1968 depends on FB_S3C2410
1969 help
1970 3.5 inch 240X320 LCD(ACX502BMU)
1971
1972 endchoice
1973
1974 config BACKLIGHT_MINI2440
配置內(nèi)核
Device Drivers --- Graphics support --- * Support for frame buffer devices --- LCD select (3.5 inch 240X320 LCD(ACX502BMU)) --- (X) 3.5 inch 240X320 LCD(ACX502BMU)
LCD驅(qū)動移植完成?。?!
三、開機logo和開機信息顯示
Device Drivers --- Graphics support --- * Support for frame buffer devices --- [*] Bootup logo --- [*] Standard 16-color Linux logo (本人的24位死活不能顯示,先改成16位吧)
在文件系統(tǒng)rootfs/etc/inittab下作如下修改(為了在LCD上顯示打印信息):
1 ::sysinit:/etc/init.d/rcS
2 tty1::askfirst:-/bin/sh //添加
3 s3c2410_serial0::askfirst:-/bin/sh
4 ::ctrlaltdel:/sbin/reboot
5 ::shutdown:/bin/umount -a -r
6
四,編譯測試
#make zImage
#cd arch/arm/boot/
#mkimage -n 'mini2440_linux' -A arm -O linux -T kernel -C none -a 0x31000000 -e 0x31000040 -d zImage uImage
#chmod a+x uImage
#cp uImage /tftp/boot
設置U-BOOT參數(shù)如下:
linux應用層基本上都是通過其他庫去操作lcd的,比如opengl,directfb等等,一般很少去直接操作fb的,所以,要先搞清楚使用的是什么框架
去掉啟動參數(shù)里的quiet就是啰嗦模式,所有啟動步驟都會刷到屏幕上
shell腳本中l(wèi)cd是FTP服務的內(nèi)置命令,是在本地主機目錄操作的命令。
示例腳本(批量下載腳本代碼):
#從FTP上批量下載文件到本地
#!/bin/sh
ftp -v -n 121.112.110.121 EOF ? ?#EOF只是一個分界符標志 也可以使用EOM,!等
user user password?
binary ?#文件傳輸類型
cd /work/guoch/files? ? #cd是在遠程主機目錄操作的命令
lcd ./ ? ? ? ? ? ?? #lcd是在本地主機目錄操作的命令
prompt ?#取消交互
mget * ?#mget是批量的下載文件
bye
EOF ? ? ? #EOF只是一個分界符標志
echo "download from ftp successfully"? #輸出成功標識
擴展資料
FTP使用格式介紹:
ftp?[-v]?[-d]?[-i]?[-n]?[-g]?[-s:filename]?[-a]?[-w:windowsize]?[computer]
參數(shù)介紹:
1、-v?-??禁止顯示遠程服務器相應信息。
2、-n?-??禁止自動登錄。
3、-i?-???多文件傳輸過程中關閉交互提示。
4、-d?-??啟用調(diào)試,顯示所有客戶端與服務器端傳遞的命令。
5、-g?-??禁用文件名通配符,允許在本地文件和路徑名中使用。