我正在使用NAS来备份我的文件服务器。 NAS通过NFS导出/share/Backup
,NFS作为/mount/qnap
安装在文件服务器上。我想跟踪哪些文件是rsynced但排除包含许多小文件的Backup-Dir。因此我运行了两个rsync
实例,一个-v
实例,另一个实例没有rsync --delete -av --exclude Backup /mnt/btrfs-raid/ /mnt/qnap/
。以下命令可以正常工作,执行后,/ mount / qnap上的目录结构与/ mount / btrfs-raid相同。
rsync --delete -av /mnt/btrfs-raid/Backup /mnt/qnap/Backup
使用命令
更新Backup文件夹/mnt/qnap/Backup/Backup/..Subdirectories
在NAS上生成以下目录结构:
rsync --delete -av /mnt/btrfs-raid/Backup /mnt/qnap/
要获得我希望的结果,我必须从目标目录路径中删除最后一个“备份”:
class VideoStreamServer {
public void startServer() {
outFilePath = getActivity().getExternalFilesDir("/") + "/pdf.pdf";
outFile = new File(outFilePath);
Runnable videoStreamTask = new Runnable() {
@Override
public void run() {
try {
ServerSocket socket = new ServerSocket(port);
System.out.println("Waiting for client to connect.");
while (true) {
Socket client = socket.accept();
BufferedOutputStream os = new BufferedOutputStream(client.getOutputStream());
FileInputStream in = new FileInputStream(outFile);
BufferedInputStream inFromClient = new BufferedInputStream(client.getInputStream());
StringBuilder sb = new StringBuilder();
sb.append("HTTP/1.1 200 OK\r\n");
sb.append("Accept-Ranges: bytes\r\n");
sb.append("Connection: close\r\n");
sb.append("Content-Length: " + in.available() + "\r\n");
sb.append("Content-Disposition: attachment; filename=file.pdf\r\n");
sb.append("Content-Type: application/pdf \r\n");
sb.append("\r\n");
byte[] data = new byte[1024];
int length;
//inFromClient.read(data);
//System.out.println("request from client"+getStreamData(inFromClient));
System.out.println("Thread Started");
//System.setProperty("http.keepAlive", "false");
os.write(sb.toString().getBytes());
while ((length = in.read(data)) != -1) {
os.write(data, 0, length);
}
os.close();
client.close();
socket.close();
in.close();
break;
}
} catch (IOException e) {
e.printStackTrace();
}
}
};
Thread streamServer = new Thread(videoStreamTask);
streamServer.start();
}
}
为什么第二个例子不像第一个例子那样有效? 谢谢 斯蒂芬
答案 0 :(得分:0)
路径中的尾部斜杠对rsync
很重要。请参阅the documentation。
rsync -avz foo:src/bar /data/tmp
这将递归地将计算机foo上目录src / bar中的所有文件传输到本地计算机上的/ data / tmp / bar目录中。文件以“存档”模式传输,这可确保传输中保留符号链接,设备,属性,权限,所有权等。此外,压缩将用于减少传输的数据部分的大小。
rsync -avz foo:src/bar/ /data/tmp
源上的尾部斜杠会更改此行为,以避免在目标位置创建其他目录级别。您可以将源尾部/尾部视为“复制此目录的内容”,而不是“按名称复制目录”,但在这两种情况下,包含目录的属性都将传输到目标上的包含目录。换句话说,以下每个命令都以相同的方式复制文件,包括它们对/ dest / foo属性的设置: