رسينك:كيف يمكنني تكوين لإنشاء الدليل الهدف على الخادم ؟
-
06-07-2019 - |
سؤال
أود أن rsync
من الكمبيوتر المحلي إلى ملقم.على الدليل الذي لا وجود له, أريد rsync
في خلق هذا دليل على الخادم الأول.
كيف يمكن أن أفعل ذلك ؟
المحلول
إذا كان لديك أكثر من الدليل أوراق الماضي المراد إنشاؤها، يمكنك تشغيل ssh ... mkdir -p
منفصلة لأول مرة، أو استخدام خدعة --rsync-path
ك <لأ href = "http://www.schwertly.com/2013/07/ وأوضح إجبار-رسينك إلى إنشاء باستخدام-بعد-مسار-رسينك مسار / "يختلط =" noreferrer "> هنا :
rsync -a --rsync-path="mkdir -p /tmp/x/y/z/ && rsync" $source user@remote:/tmp/x/y/z/
وأو استخدام خيار --relative
كما اقترح توني. في هذه الحالة، يمكنك فقط تحديد الجذر من جهة، والتي يجب أن يكون موجودا، وليس بنية الدليل من المصدر، الذي سيتم إنشاء:
rsync -a --relative /new/x/y/z/ user@remote:/pre_existing/dir/
وبهذه الطريقة، سوف ينتهي مع / pre_existing / دير / الجديدة / س / ص / ض /
وإذا كنت تريد أن يكون "ص / ض /" خلق، ولكن ليس داخل "الجديد / س /"، يمكنك إضافة ./
حيث تريد --relative
to تبدأ:
rsync -a --relative /new/x/./y/z/ user@remote:/pre_existing/dir/
وسيخلق / pre_existing / دير / ص / ض ع /.>
نصائح أخرى
على افتراض أنك تستخدم ssh للتواصل رسينك ماذا عن إرسال الأوامر ssh قبل:
ssh user@server mkdir -p existingdir/newdir
إذا كان موجودا بالفعل لا يحدث شيء
والخيار -R, --relative
سوف تفعل ذلك.
وعلى سبيل المثال: إذا كنت تريد أن /var/named/chroot
النسخ الاحتياطي وإنشاء بنية الدليل نفسه على الملقم البعيد ثم -R
سوف تفعل ذلك تماما
وهذا العمل بالنسبة لي:
rsync /dev/null node:existing-dir/new-dir/
وأنا لا تحصل على هذه الرسالة:
skipping non-regular file "null"
ولكن لا داعي للقلق حول وجود دليل فارغ التسكع.
وأنا لا أعتقد أنك تستطيع أن تفعل ذلك مع القيادة رسينك واحد، ولكن يمكنك 'قبل إنشاء "دليل إضافي أولا مثل هذا:
rsync --recursive emptydir/ destination/newdir
وحيث 'emptydir' هو دليل فارغ المحلي (الذي قد يكون لديك لإنشاء كدليل مؤقت أولا).
وانها قليلا من الإختراق، لكنه يعمل بالنسبة لي.
وهتافات
وكريس
وهذه الإجابة تستخدم أجزاء من إجابات أخرى، ولكن نأمل أنها سوف تكون أكثر وضوحا قليلا لالظروف. كنت أبدا المحدد ما كنت rsyncing - إدخال دليل واحد أو عدة ملفات
لذلك دعونا نفترض انك تتحرك إدخال الدليل المصدر عبر، وليس مجرد نقل الملفات الواردة فيه.
ودعونا نقول لديك دليل يسمى محليا data/myappdata/
ولديك حمولة من الدلائل تحت هذا.
لقد data/
على الجهاز المستهدف ولكن لا data/myappdata/
- وهذا هو السهل بما فيه الكفاية:
rsync -rvv /path/to/data/myappdata/ user@host:/remote/path/to/data/myappdata
ويمكنك حتى استخدام اسم مختلف عن الدليل البعيد:
rsync -rvv --recursive /path/to/data/myappdata user@host:/remote/path/to/data/newdirname
إذا كنت مجرد نقل بعض الملفات ولا تتحرك دخول الدليل الذي يحتوي لهم فإنك ستفعل:
rsync -rvv /path/to/data/myappdata/*.txt user@host:/remote/path/to/data/myappdata/
ووأنه سيتم إنشاء الدليل myappdata
لك على الجهاز البعيد لوضع الملفات في مرة أخرى، يجب أن الدليل data/
موجود على الجهاز البعيد.
وبالمناسبة يا استخدام العلم -rvv
هو الحصول على إخراج مطول مضاعف لذلك هو واضح حول ما تقوم به، وكذلك السلوك العودية ضرورية.
وفقط لتظهر لك ما يحصل عند استخدام رسينك (3.0.9 على أوبونتو 12.04)
$ rsync -rvv *.txt user@remote.machine:/tmp/newdir/
opening connection using: ssh -l user remote.machine rsync --server -vvre.iLsf . /tmp/newdir/
user@remote.machine's password:
sending incremental file list
created directory /tmp/newdir
delta-transmission enabled
bar.txt
foo.txt
total: matches=0 hash_hits=0 false_alarms=0 data=0
وهذا الأمل يزيل هذا الأمر قليلا.
وعلى سبيل المثال:
ومن: /xxx/a/b/c/d/e/1.html
ل: المستخدم @ بعيد: /pre_existing/dir/b/c/d/e/1.html
ورسينك:
ومؤتمر نزع السلاح / XXX / أ / && رسينك -auvR ب / ج / د / ه / المستخدم @ جهاز التحكم عن بعد: / pre_existing / دير /