我有一个包含数百个嵌套子文件夹的大目录树。我只需要将4个文件夹及其内容复制到远程系统,但我需要保持目标文件夹结构不变。
例如。
./test/sub1/subsub1/hello.txt
./test/sub1/subsub2/hello2.txt
./test/sub2/hello3.txt
我想复制/测试/sub1/sub1/*到目标,例如user@system:/test/sub1/subsub1/*但我不想复制subsub2或sub2。
我尝试使用scp如下:
scp -r ./test/sub1/subsub1 me@my-system:~/test/sub1/subsub1
结果:scp:/test/sub1/subsub1:没有这样的文件或目录
我也尝试过:
scp -r ./test/sub1/subsub1 me@my-system:~/test
这可以工作,但会将所有文件转储到单个目录中。不维护/test/sub1/subsub1目录结构。
如何复制文件夹,同时保持其结构?
使用-R(--相对)
选项rsync以保留目录结构。看看:
https://serverfault.com/questions/39522/how-to-keep-the-full-path-with-rsync
举个例子:
[localbox] tree test
test
└── sub1
└── subsub1
├── a
├── b
├── c
├── d
├── e
└── f
[localbox] rsync -avR test/sub1/subsub1 me@my-system:dest_path
sending incremental file list
created directory dest_path
test/
test/sub1/
test/sub1/subsub1/
test/sub1/subsub1/a
test/sub1/subsub1/b
test/sub1/subsub1/c
test/sub1/subsub1/d
test/sub1/subsub1/e
test/sub1/subsub1/f
sent 406 bytes received 185 bytes 394.00 bytes/sec
total size is 0 speedup is 0.00
[localbox] ssh me@my-system
[my-system] tree dest_path
dest_path
`-- test
`-- sub1
`-- subsub1
|-- a
|-- b
|-- c
|-- d
|-- e
`-- f
3 directories, 6 files
以下内容摘自rsync手册页:
-R、 --相对
使用相对路径。这意味着命令行上指定的完整路径名被发送到服务器,而不仅仅是文件名的最后一部分。当您想同时发送多个不同的目录时,这特别有用。例如,如果您使用此命令:
rsync -av /foo/bar/baz.c remote:/tmp/
... 这将创建一个名为baz的文件。远程机器上的c in/tmp/。如果您使用
rsync -avR /foo/bar/baz.c remote:/tmp/
然后是一个名为/tmp/foo/bar/baz的文件。c将在远程机器上创建,保留其完整路径。这些额外的路径元素称为“隐含目录”(即上例中的“foo”和“foo/bar”目录)。
你需要一个双通道解决方案。首先,确保远程主机上存在目标目录:
ssh me@my-system 'mkdir -p ~/test/sub1/subsub1'
然后,你可以复制你的文件。我建议使用rsync而不是scp,因为它是为同步目录而设计的。示例用法:
rsync -r -e ssh ./test/sub1/subsub1/ me@my-system:~/test/sub1/subsub1
标记接受远程shell来执行传输。尾随斜杠对于rsync非常重要,因此请确保您的斜杠与上述示例匹配。
问题内容: 我有一个带有数百个嵌套子文件夹的大型目录树。我只需要将4个文件夹及其内容复制到远程系统,但是我需要将目标文件夹结构保持不变。 例如 我想将./test/sub1/subsub1/复制到诸如user @ system:〜/ test / sub1 / subsub1 / 的目标,但是我不想复制subsub2或sub2。 我已经尝试过使用scp,如下所示: 结果:scp:/ test /
问题内容: 我使用以下代码将文件保存在swift 3的文档目录中: 但是正如您所看到的,我不习惯获取文档目录路径,因为它仅给出URL而不是字符串。 问题: 如何从文件管理器获取字符串? 我的代码有崩溃的可能吗? 问题答案: 请反过来考虑。 建议使用此方法来处理文件路径,因为它包含用于添加和删除路径组件和扩展名的所有便捷方法,而不是Apple从中删除了这些方法。 不鼓励您连接诸如之类的路径。这很容易
问题内容: 我有使用Spark生成的RDD。现在,如果我将此RDD写入csv文件,则可以使用“ saveAsTextFile()”之类的一些方法,该方法将csv文件输出到HDFS。 我想将文件写入本地文件系统,以便我的SSIS进程可以从系统中选择文件并将它们加载到DB中。 我目前无法使用sqoop。 除了编写Shell脚本之外,Java中是否还有其他地方可以做到这一点? 需要任何清晰度,请告知。
我想知道如何保存单个对象(例如用户的令牌)到文件系统。共享偏好是最佳做法吗?还是用单行的表或者其他的更好?
我的应用程序将一些文件保存到设备上的数据/数据文件夹中。保存远程文件后,我会处理这些文件,并将它们复制到其他文件夹中。在之前测试过的所有设备上,All都能正常工作,但在galaxy s3上会生成空指针异常。似乎我不被允许在那个文件夹上写或处理文件!但只有新的星系s3!我也无法使用EclipseDDMS文件浏览器在数据文件夹中找到任何文件,而在模拟器(相同的android版本)中,我可以正确查看所有
问题内容: 我正在尝试创建文件并将其保存到站点的根目录,但是我不知道它在哪里创建文件,因为看不到任何文件。而且,如果可能的话,我需要每次都覆盖该文件。 这是我的代码: 如何设置保存在根目录下? 问题答案: 它在与脚本相同的目录中创建文件。试试这个吧。