Derzeit führe ich diese beiden Befehle aus, um eine schnelle Sicherung des Verzeichnisses zu erstellen. Gibt es eine Möglichkeit, die beiden Befehle zu einem zu kombinieren, sodass ich das neue Verzeichnis in einem Befehl kopiere und umbenenne?
#cp -R /tf/Custom_App /tf/Custom_App_backups/
#mv /tf/Custom_App_backups/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21
cp -R /tf/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21
Antworten:
Sie sollten in der Lage sein, nur zu tun
Allerdings , wenn das Zielverzeichnis bereits existiert, wäre dies der letzte Teil des Source - Pfad zu dem Zielpfad anhängen, Erstellen
/tf/Custom_App_backups/Custom_App_2017-12-21/Custom_App
, und kopieren Sie dann den Rest des Baumes innerhalb dieser.Um dies zu verhindern, verwenden Sie
/tf/Custom_App/.
als Quelle. In diesem Fall möchten Sie natürlichrm -r /tf/Custom_App_backups/Custom_App_2017-12-21
zuerst, wenn Sie nicht möchten, dass ältere Dateien nach dem Kopieren herumliegen.Der Unterschied zwischen
/some/dir
und/some/dir/.
wurde vor einiger Zeit in cp diskutiert . (Punkt) oder .. (Punkt Punkt) sind das Quellverzeichnisquelle
.
als Quellverzeichnis besteht darin, das-T
Flag zu verwenden,cp
um das Ziel zu überschreiben, anstatt ein neues Mitglied darin zu erstellen.cp
./tf/Custom_app/.
Trick ist genau das, was ich brauchte.cp -a
funktioniert auch.cp -a
Natürlich erscheint es auch in zB FreeBSD und OpenBSD, aber es ist immer noch keine Standardfunktion, dh nicht von POSIX spezifiziert . (cp -T
das früher erwähnt wurde, scheint ein GNUismus zu sein, es ist nicht in POSIX und nicht in den BSDs, soweit ich sehen kann.)Alternativ können Sie dies folgendermaßen tun:
Auf diese Weise können Sie Ihren benutzerdefinierten Speicherort im Voraus angeben. Beachten Sie auch, dass das Suffix verwendet wird. Auf
/.
diese Weise können Sie nur den Inhalt kopieren und den enthaltenen Ordner ausschließen. In diesem Fall handelt es sich um denCustom_app
Ordner.quelle