cp -rf和cp -af的区别
时间: 2023-07-13 18:29:35 浏览: 254
cp -rf和cp -af的区别在于文件复制过程中发生同名文件冲突时的处理方式。
当使用cp -rf命令复制文件时,如果目标目录已经存在同名的文件,那么cp命令将会询问是否覆盖该文件。如果输入y,则会覆盖该文件,如果输入n,则不覆盖该文件。如果不指定任何选项,则cp命令默认不覆盖同名文件。
而当使用cp -af命令复制文件时,如果目标目录已经存在同名的文件,那么cp命令将会强制覆盖该文件,而不会询问用户是否覆盖该文件。此外,cp -af命令还会保留目标文件的所有属性,如权限、所有者和时间戳等。
因此,如果你需要在复制文件时覆盖同名文件,可以使用cp -af命令,否则可以使用cp -rf命令。
相关问题
rootfs_build: boardtools busybox pctools #cp -af $(BUSYBOX_DIR)/$(BUSYBOX_VER)/_install/* $(OSDRV_DIR)/pub/$(PUB_ROOTFS) #copy platform_overlay file cp -rf $(SOM528_DIR)/rootfs/platform_overlay/* $(OSDRV_DIR)/pub/$(PUB_ROOTFS) $(call rootfs_fun) #copy image to install dir mv $(OSDRV_DIR)/pub/$(PUB_IMAGE)/* $(SOM528_DIR)/install/$(PUB_IMAGE)/ rootfs_notools_build: $(call rootfs_fun) mv $(OSDRV_DIR)/pub/$(PUB_IMAGE)/* $(SOM528_DIR)/install/$(PUB_IMAGE)/详细解析
这段代码看起来像是一个Makefile的规则,其中包含了两个目标:rootfs_build和rootfs_notools_build。
在rootfs_build目标中,首先复制了busybox和pctools到指定目录$(OSDRV_DIR)/pub/$(PUB_ROOTFS),然后复制了$(SOM528_DIR)/rootfs/platform_overlay/目录下的文件到同一目录。接着调用了rootfs_fun函数(该函数没有在代码中给出),最后将$(OSDRV_DIR)/pub/$(PUB_IMAGE)目录下的内容移动到$(SOM528_DIR)/install/$(PUB_IMAGE)/目录下。
在rootfs_notools_build目标中,只调用了rootfs_fun函数,并将$(OSDRV_DIR)/pub/$(PUB_IMAGE)目录下的内容移动到$(SOM528_DIR)/install/$(PUB_IMAGE)/目录下。
解释下后面的代码: display_alert "Merging and packaging linux firmware" "@host" "info" local firmwaretempdir plugin_dir firmwaretempdir=$(mktemp -d) chmod 700 ${firmwaretempdir} trap "ret=\$?; rm -rf \"${firmwaretempdir}\" ; exit \$ret" 0 1 2 3 15 plugin_dir="orangepi-firmware${FULL}" mkdir -p "${firmwaretempdir}/${plugin_dir}/lib/firmware" [[ $IGNORE_UPDATES != yes ]] && fetch_from_repo "https://github.com/orangepi-xunlong/firmware" "${EXTER}/cache/sources/orangepi-firmware-git" "branch:master" if [[ -n $FULL ]]; then [[ $IGNORE_UPDATES != yes ]] && fetch_from_repo "$MAINLINE_FIRMWARE_SOURCE" "${EXTER}/cache/sources/linux-firmware-git" "branch:master" # cp : create hardlinks cp -af --reflink=auto "${EXTER}"/cache/sources/linux-firmware-git/* "${firmwaretempdir}/${plugin_dir}/lib/firmware/" fi # overlay our firmware # cp : create hardlinks cp -af --reflink=auto "${EXTER}"/cache/sources/orangepi-firmware-git/* "${firmwaretempdir}/${plugin_dir}/lib/firmware/" # cleanup what's not needed for sure rm -rf "${firmwaretempdir}/${plugin_dir}"/lib/firmware/{amdgpu,amd-ucode,radeon,nvidia,matrox,.git} cd "${firmwaretempdir}/${plugin_dir}" || exit # set up control file mkdir -p DEBIAN cat <<-END > DEBIAN/control Package: orangepi-firmware${FULL} Version: $REVISION Architecture: all Maintainer: $MAINTAINER <$MAINTAINERMAIL> Installed-Size: 1 Replaces: linux-firmware, firmware-brcm80211, firmware-ralink, firmware-samsung, firmware-realtek, orangepi-firmware${REPLACE} Section: kernel Priority: optional Description: Linux firmware${FULL} END cd "${firmwaretempdir}" || exit # pack mv "orangepi-firmware${FULL}" "orangepi-firmware${FULL}_${REVISION}_all" display_alert "Building firmware package" "orangepi-firmware${FULL}_${REVISION}_all" "info" fakeroot dpkg-deb -b -Z${DEB_COMPRESS} "orangepi-firmware${FULL}_${REVISION}_all" >> "${DEST}"/${LOG_SUBPATH}/install.log 2>&1 mv "orangepi-firmware${FULL}_${REVISION}_all" "orangepi-firmware${FULL}" rsync -rq "orangepi-firmware${FULL}_${REVISION}_all.deb" "${DEB_STORAGE}/" # remove temp directory rm -rf "${firmwaretempdir}"
这段代码的作用是创建一个 Debian 软件包,用于安装 Linux firmware。首先,它创建一个临时目录 `firmwaretempdir`,用于存储 Linux firmware 的文件。然后,它从 Github 上下载 OrangePi 的 firmware,并将其放入临时目录中。接着,如果有指定 `$FULL` 变量,则从 `$MAINLINE_FIRMWARE_SOURCE` 下载 Linux firmware,并将其也放入临时目录中。之后,它将 OrangePi 和 Linux firmware 的内容复制到 `firmwaretempdir` 目录中,并删除不需要的文件和文件夹。接着,它在 `firmwaretempdir` 目录中创建一个控制文件 `DEBIAN/control`,用于描述软件包的相关信息。最后,它使用 `dpkg-deb` 命令将 `firmwaretempdir` 目录打包成一个 Debian 软件包,并将其存储到 `$DEB_STORAGE` 目录中,最后清理临时目录。
阅读全文