最后,我能够在android程序中运行超级用户命令.现在我想从我的手机rsync几个文件到我的笔记本电脑,这就出现了问题.rsync需要密码给我,我不知道如何给我的笔记本电脑的密码到这个Android程序.有一些方法可以使用私钥/公钥来完成rsync.但我想要的一般是我如何通过键盘输入rsync或任何命令...这里我附加我的程序...
package com.iiitb.nikhil.sindhu;
import java.io.BufferedReader;
import java.io.DataInput;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.*;
import android.util.*;
public class LinuxShellCommandAndroidProgramActivity extends Activity {
/** Called when the activity is first created. */
TextView tv;
LinearLayout l;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
Process process = Runtime.getRuntime().exec("/system/bin/su");
DataOutputStream os = new DataOutputStream(process.getOutputStream());
DataInputStream is=new DataInputStream(process.getInputStream());
tv = new TextView(this);
os.writeBytes("/system/xbin/rsync /data/data/newfiles sindhu@192.168.2.103:/home/sindhu/");
String output=new String();
String temp = new String();
output=is.readLine();
tv.setText(output);
os.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
setContentView(tv); }
}
}
Run Code Online (Sandbox Code Playgroud)
在上面我试图从手机到我的笔记本电脑做rsync ..上面的命令会要求输入密码,但我不明白如何给这个android程序输入
如果 rsync 要求输入密码(等待用户输入),您可以将其从 java 写入执行过程(“模拟”键盘输入),
例如Can Java Runtime.exec 另一个使用 stdin 的 java 程序吗?
这是在 android shell 中不带任何参数执行 rsync 时的输出
有一个 -password-file=FILE 标志,但我没有看到任何直接的方法来设置密码
# 同步
rsync 版本 3.0.6 协议版本 30
版权所有 (C) 1996-2009,作者:Andrew Tridgell、Wayne Davison 等。
网站:http://rsync.samba.org/
能力:
64 位文件、64 位 inum、32 位时间戳、64 位长整数、
没有套接字对、硬链接、符号链接、IPv6、批处理文件、就地、
附加、无 ACL、xattrs、inov、symtimes
rsync 绝对不提供任何保证。这是免费软件,您
欢迎在一定条件下重新分发它。参见 GNU
通用公共许可证了解详细信息。
rsync是一个能够高效远程更新的文件传输程序
通过快速差分算法。
用法:rsync [选项]...SRC [SRC]...DEST
或 rsync [选项]... SRC [SRC]... [USER@]HOST:DEST
或 rsync [选项]... SRC [SRC]... [USER@]HOST::DEST
或 rsync [选项]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST
或 rsync [选项]... [USER@]HOST:SRC [DEST]
或 rsync [选项]... [USER@]HOST::SRC [DEST]
或 rsync [选项]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
':' 用法通过远程 shell 连接,而 '::' 和 'rsync://' 用法连接
到 rsync 守护进程,并要求 SRC 或 DEST 以模块名称开头。
选项
-v, --verbose 增加详细程度
-q, --quiet 抑制非错误消息
--no-motd 抑制守护程序模式 MOTD(请参阅联机帮助页警告)
-c, --checksum 根据校验和跳过,而不是修改时间和大小
-a, --archive 归档模式;等于 -rlptgoD(无 -H、-A、-X)
--no-OPTION 关闭隐含的选项(例如 --no-D)
-r, --recursive 递归到目录
-R, --relative 使用相对路径名
--no-implied-dirs 不使用 --relative 发送隐含目录
-b, --backup 进行备份(参见 --suffix 和 --backup-dir)
--backup-dir=DIR 将备份制作为基于 DIR 的层次结构
--suffix=SUFFIX 设置备份后缀(默认 ~ w/o --backup-dir)
-u, --update 跳过接收器上较新的文件
--inplace 就地更新目标文件(参见手册页)
--append 将数据附加到较短的文件上
--append-verify 与 --append 类似,但文件校验和中包含旧数据
-d, --dirs 传输目录而不递归
-l, --links 将符号链接复制为符号链接
-L, --copy-links 将符号链接转换为引用文件/目录
--copy-unsafe-links 仅转换“不安全”符号链接
--safe-links 忽略指向源树外部的符号链接
-k, --copy-dirlinks 将符号链接转换为指向的目录
-K, --keep-dirlinks 将接收器上的符号链接目录视为目录
-H, --hard-links 保留硬链接
-p, --perms 保留权限
-E, --executability 保留文件的可执行性
--chmod=CHMOD 影响文件和/或目录权限
-X, --xattrs 保留扩展属性
-o, --owner 保留所有者(仅限超级用户)
-g, --group 保留组
--devices 保留设备文件(仅限超级用户)
--specials 保留特殊文件
-D 与 --devices --specials 相同
-t, --times 保留修改时间
-O, --omit-dir-times 忽略 --times 中的目录
--super 接收者尝试超级用户活动
--fake-super 使用 xattrs 存储/恢复特权属性
-S, --sparse 有效处理稀疏文件
-n, --dry-run 执行试运行而不进行任何更改
-W, --whole-file 复制整个文件(没有 delta-xfer 算法)
-x, --one-file-system 不跨越文件系统边界
-B, --block-size=SIZE 强制使用固定的校验和块大小
-e, --rsh=COMMAND 指定要使用的远程 shell
--rsync-path=PROGRAM 指定要在远程计算机上运行的 rsync
--existing 跳过在接收器上创建新文件
--ignore-existing 跳过更新接收器上已存在的文件
--remove-source-files 发送者删除同步文件(非目录)
--del 是 --delete-during 的别名
--delete 从目标目录中删除无关文件
--delete-before 接收者在传输之前删除,而不是在传输期间删除
--delete-during 接收者在传输期间删除(默认)
--delete-delay 查找期间删除,之后删除
--delete-after 接收者在传输后删除,而不是在传输过程中删除
--delete-excluded 还从目标目录中删除排除的文件
--ignore-errors 即使有 I/O 错误也删除
--force 强制删除目录,即使不为空
--max-delete=NUM 不要删除超过 NUM 个文件
--max-size=SIZE 不要传输任何大于 SIZE 的文件
--min-size=SIZE 不传输任何小于 SIZE 的文件
--partial 保留部分传输的文件
--partial-dir=DIR 将部分传输的文件放入 DIR
--delay-updates 在传输结束时将所有更新的文件放置到位
-m, --prune-empty-dirs 从文件列表中删除空目录链
--numeric-ids 不按用户/组名称映射 uid/gid 值
--timeout=SECONDS 设置 I/O 超时(以秒为单位)
--contimeout=SECONDS 设置守护程序连接超时(以秒为单位)
-I, --ignore-times 不跳过大小和修改时间匹配的文件
--size-only 跳过大小匹配的文件
--modify-window=NUM 比较修改次数,但精度降低
-T, --temp-dir=DIR 在目录 DIR 中创建临时文件
-y, --fuzzy 如果没有目标文件则查找相似文件作为基础
--compare-dest=DIR 还比较相对于 DIR 的目标文件
--copy-dest=DIR ... 并包含未更改文件的副本
--link-dest=DIR 未更改时硬链接到 DIR 中的文件
-z, --compress 在传输过程中压缩文件数据
--compress-level=NUM 显式设置压缩级别
--skip-compress=LIST 跳过压缩后缀为 LIST 的文件
-C, --cvs-exclude 自动忽略文件,与 CVS 相同
-f, --filter=RULE 添加文件过滤规则
-F 与 --filter='dir-merge /.rsync-filter' 相同
重复:--filter='- .rsync-filter'
--exclude=PATTERN 排除与 PATTERN 匹配的文件
--exclude-from=FILE 从 FILE 中读取排除模式
--include=PATTERN 不排除匹配 PATTERN 的文件
--include-from=FILE 从 FILE 读取包含模式
--files-from=FILE 从 FILE 读取源文件名列表
-0, --from0 所有 *-from/filter 文件均以 0 分隔
-s, --protect-args 无空间分割;仅通配符特殊字符
--address=ADDRESS 将传出套接字的地址绑定到守护程序
--port=PORT 指定双冒号备用端口号
--sockopts=OPTIONS 指定自定义 TCP 选项
--blocking-io 对远程 shell 使用阻塞 I/O
--stats 给出一些文件传输统计信息
-8, --8-bit-output 在输出中保留高位字符未转义
-h, --人类可读的以人类可读格式输出数字
--progress 显示传输过程中的进度
-P 与 --partial --progress 相同
-i, --itemize-changes 输出所有更新的更改摘要
--out-format=FORMAT 使用指定的 FORMAT 输出更新
--log-file=FILE 记录我们正在对指定文件执行的操作
--log-file-format=使用指定的 FMT 进行 FMT 日志更新
--password-file=FILE 从 FILE 读取守护程序访问密码
--list-only 列出文件而不是复制它们
--bwlimit=KBPS 限制 I/O 带宽;每秒千字节数
--write-batch=FILE 将批量更新写入 FILE
--only-write-batch=FILE 类似 --write-batch 但不更新目标
--read-batch=FILE 从 FILE 中读取批量更新
--protocol=NUM 强制使用较旧的协议版本
--iconv=CONVERT_SPEC 请求文件名的字符集转换
-4, --ipv4 更喜欢 IPv4
-6, --ipv6 更喜欢 IPv6
--version 打印版本号
(-h) --help 显示此帮助(-h 无需其他选项即可使用)
使用“rsync --daemon --help”查看守护程序模式命令行选项。
请参阅 rsync(1) 和 rsyncd.conf(5) 手册页以获取完整文档。
请参阅 http://rsync.samba.org/ 了解更新、错误报告和答案
rsync 错误:main.c(1407) [client=3.0.6] 处的语法或使用错误(代码 1)
| 归档时间: |
|
| 查看次数: |
7753 次 |
| 最近记录: |